unity3d入门教程七

unity3d入门教程七

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的消耗

相关推荐
_zhourui_h_8 小时前
Unity MyFramework 用法说明(十五):使用 ResourceRef 管理资源引用与异步加载
unity3d
Duo1J10 小时前
【UE】Slate 编辑器工具开发03 - 节点编辑器 (EdGraph)
ue5·编辑器·游戏引擎·ue4
郝学胜-神的一滴11 小时前
[简化版 GAMES 104] 现代游戏引擎 02:拆解现代游戏引擎5+1层级架构,吃透引擎底层核心逻辑
c++·unity·架构·游戏引擎·图形渲染·unreal engine·系统设计
SmalBox13 小时前
【节点】[ThreadMapDetail节点]原理解析与实际应用
unity3d·游戏开发·图形学
SmalBox1 天前
【节点】[Emission节点]原理解析与实际应用
unity3d·游戏开发·图形学
_zhourui_h_1 天前
Unity MyFramework 用法说明(十四):使用 ComponentOwner 和 GameComponent 拆分对象能力
unity3d
郝学胜-神的一滴2 天前
中级OpenGL教程 023:Assimp模型加载全解——从源码到架构的骈文探秘
c++·unity·游戏引擎·cmake·unreal engine·opengl
_zhourui_h_2 天前
Unity MyFramework 用法说明(十三):使用 StateMachine 管理互斥与共存的角色状态
unity3d
郝学胜-神的一滴2 天前
中级OpenGL教程 022:探秘三维世界的血脉传承——物体父子关系与矩阵递归奥义
c++·线性代数·unity·矩阵·游戏引擎·unreal engine·opengl
SmalBox2 天前
【节点】[UnpackWaterData节点]原理解析与实际应用
unity3d·游戏开发·图形学