unity3d入门教程七
- 17.1物理系统
- 17.2静态刚体
- 17.3刚体的碰撞
- 17.4刚体的反弹
- 18.1运动学刚体
- 18.2碰撞检测
- 18.3碰撞事件回调
- 18.4目标的识别
- 18.5碰撞的规避
17.1物理系统
在物理系统中的物体具有质量和速度的是刚体
不用写代码就会自由落体运动了
17.2静态刚体
给 ‘地面’ 添加一个 Rigidbody 2D 组件,使之成为刚体
将刚体类型设为 Static
此时地面就静止不动的刚体
上面的求可以下落,只是此时两者无碰撞,一直下落,下节讲碰撞的效果
17.3刚体的碰撞
上一节的球落地会直接穿过地面
17.4刚体的反弹
18.1运动学刚体
将飞机设置为kinematic刚体后,因为无质量,变不会自由下落,但会与其余刚体发生碰撞是能检测出来的
18.2碰撞检测
1 添加两个物体,‘飞机’ 和 ‘小球’
2 添加刚体组件 Rigidbody 2D
设为 Kinematic
3 添加 碰撞组件 Box Collider2d
勾选 Is Trigger ( 碰撞触发器 )
4 添加脚本组件 , 重写事件函数OnTriggerEnter2D()
void OnTriggerEnter2D(Collider2D collision)
{
Debug.Log("飞机:探测到了碰撞 ... ");
}
小球和飞机刚体碰撞组件都添加了,飞机的脚本如下
小球暂无脚本
球不动,飞机向上飞,当碰撞到小球时,就会输出控制台
此时给小球添加脚本
碰撞后,小球和飞机都进行了输出
18.3碰撞事件回调
碰撞事件回调,有三个:
OnTriggerEnter2D :两个碰撞体开始相遇
OnTriggerStay2D : 两个碰撞体接触中
OnTriggerExit2D: 两个碰撞体分开
一般只使用第一个第一次碰撞的函数即可,后面两个方法用不到
只要拿到组件无论是collider2D还是transform等组件,有了组件就可以知道其挂载的游戏对象的名称等信息
通过collider2D拿到碰撞到的游戏对象的名称等信息
18.4目标的识别
1 添加一个新的 Tag
菜单里找 Edit | Project Settings | Tags and Layers …
点 + 号,可以添加一个自定义 Tag
点 – 号,可以删除一个自定义的 Tag , 重启项目后生效
2 设置 Tag
在场景中选中一个物体,在 Inspector 窗口里设置 Tag
18.5碰撞的规避
此部分比较难,可以练习一下,前四节必须掌握
系统碰撞的时候自动计算,减轻CPU的消耗