主要有三个方面:
1.物理系统
2.2D刚体
3.物理材质
目录
1.物理系统
Unity的物理系统主要是对现实中的物理现象模拟,如重力等
目前我们学习的是2D物理系统,在以后的文章中,还会学习3D的物理系统
物理系统常用组件主要由刚体和碰撞体组成
2.2D刚体
首先点击:
点击之后呢,会出现这个提示框:
物理是用于3D游戏的,物理2D是用于2D游戏的。
里面的属性-重量有两个属性:X和Y;X正值是往右移动,X为负值时,往左移动;Y值为正时,往上移动,Y值为负时,往下移动。
对了,还要很重要的一点是,物体要加上这样一个组件,才能生效:
Rigidbody 2D //刚体2D才能生效
但是这样西瓜会一直下落:
有什么办法阻止呢?加个地面呗。真聪明,我们来加个地面:
咦?为什么没效果呢?
这是因为西瓜的圆形是渲染器渲染出来的,上一篇文章讲过。刚体可不管你渲染出来的图片是什么样子 ,对于刚体来说,这个物体,或者说是图片,根本没有边缘,所以会无限下落。
那有什么办法不让他继续下落呢?悄悄告诉你,加上碰撞体就行了,但是碰撞体下节课才会讲,这里只需要有这个概念就行了。
西瓜加上圆形碰撞体:
地面加上方形碰撞体:
一个游戏物体如果希望有重力,那么他一定需要有Rigibody(刚体)组件;
里面有很多属性:
1. BodyType:
·Dynamic:动态,最仿真的
·Kinematic:运动,由代码控制(被Dynamic刚体碰,不会移动,但是它碰Dynamic,Dynamic会被移动)
·Static:静态,不是为了运动而设计的(不会被其他两个刚体被移动)
2.Simulated:是否模拟,不模拟的话,就不会有重力,碰撞等。(相当于是一个启用器)
3.Mass:质量
4.Linear Drag:位置移动的阻力系数
5.Angular Drag:旋转阻力
6.Gravity Scale:重力程度
7.Collision Detection:定义如何检测2D碰撞体之间的碰撞
8.Constraints:定义对2D刚体运动的任何限制
3.物理材质
创建一个物理材质:
1.项目里面右键,2.创建,3.物理材质2D
物理材质是一种资源,有两个属性:
Friction:摩擦力
Bounciness:弹性
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class L3_3Demo : MonoBehaviour
{
private Rigidbody2D r2d;
void Start()
{
r2d = GetComponent<Rigidbody2D>();
r2d.mass = 2;
r2d.gravityScale = 0.5f; //面板中有的,这里都有
r2d.MovePosition(new Vector2(0, 5));//移动到(0,5)的坐标上
}
// Update is called once per frame
void Update()
{
r2d.MovePosition(transform.position + new Vector3(0, 1, 0));
//一直向上移动(最后Z轴坐标写成0就行)
//改变力
r2d.velocity = new Vector2(0, 1);//也能实现一直向上移动
//施加力:
r2d.AddForce(Vector2.up * 1); //也能实现一直向上移动
}
}