刚体组件
英文 | 中文 | 描述 |
---|---|---|
RigidBody | 刚体组件 | physics->rigidbody ,刚体组件使一个物体有了质量,重力等。,use gravity 勾选后,物体才会受到重力,会自动下落,取消勾选就不会。,,is kinematic 表示运动学刚体,此时物体质量为0,就不会受重力的影响。 |
1. 质量
2. 阻力
3. 角阻力
4. 使用重力(取消后,只是不受重力影响,阻力等还是受影响的)
5. Is Kinematic(是运动学的,勾选后,不受物理影响)
6. 插值(一般不用修改,插值是按照上一帧做插值,外推是按照下一帧做插值)
7. 碰撞检测(离散的节省性能非连续检测高速物体检测不到,持续和连续动态是相对的快速的物体是连续动态不动的选择持续比较好但是浪费性能,没有翻译的Co...是连续检测性能低于持续和连续高于离散)
8. Constraints(冻结位置是值某个方向不能运动,冻结旋转同理)
英文 | 中文 | 描述 |
---|---|---|
Mesh Collider | 网格碰撞器 | |
Sphere Collider | 球体碰撞器 |
碰撞组件实际碰撞发生的是碰撞线框
碰撞条件
//设置一个爆炸的预设体
public gameObject Prefab;
//监听发生碰撞
private void OnCollisionEnter(Collision collision)
{
//创建一个新的爆炸物体
Instantiate(Prefab, transform.position, Quaternion.identity)
//销毁自身(火焰物体)
Destroy(gameObject);
//碰撞到的物体信息
Debug.Log(colision.gameObject.name);
Debug.Log("碰撞发生!");
}
//持续碰撞中
private void OnCollisionStay(Collision collision)
{
Debug.Log("持续碰撞中!");
}
//结束碰撞
private void OnCollisionExit(Collision collision)
{
Debug.Log("结束碰撞!");
}
触发条件 和碰撞器一样
可移动的游戏物体脚本
void Update()
{
//水平轴
float horizontal = Input.GetAxis("Horizontal");
//垂直轴
float vertical = Input.GetAxis("Vertical");
//创建成一个方向向量
Vector3 dir = new Vector3(horizontal, 0, vertical);
//朝向量方向移动Translate是平移,*Time.dalteTime是指每秒
transform.Translate(dir*Time.dalteTime);
}
触发器物体的脚本
物体Cube (1)是墙壁,触发后执行的物体,下面代码是触发后Cube (1)墙体消失
private void OnTriggerEnter(Collider other)
{
GameObject cube = GameObject.Find("Cube (1)");
if (cube != null)
{
cube.SetActive(false);
}
}
private void OnTriggerStay(Collider other)
{
}
private void OnTriggerExit(Collider other)
{
}
添加组件的时候搜索关节,会有很多,
可以做固定轴旋转
Anchor 是轴的位置
轴是轴的方向
Use Motor 自动
需要两个物体链接,在a物体加弹簧组件,把b物体拖入刚体Connected Body 就链接了,其他属性不细说了
和弹簧类似, 需要两个物体链接,在a物体加弹簧组件,把b物体拖入刚体Connected Body 就链接了,其他属性不细说了
但是性质不同,就会固定在一个物体上,无法移动等;类似胶水,可以设置断开力,到达足够力时就断开链接
其他关节暂时不讲
不同材质有不同的效果、如冰面和土地的摩擦力不同;
新建-》物理材质,可以设置摩擦力弹力等;
给物体添加材质