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

相关推荐
SmalBox3 小时前
10-02-实战-Unity原生AssetBundle实战
unity3d·游戏开发
探求虚无1 天前
用 AI 在 Unity 里做一款 RTS:最难的不是生成代码,而是证明它真的能玩
人工智能·unity·游戏引擎
SmalBox1 天前
10-01-实战-环境搭建与集成
unity3d·游戏开发
SmalBox2 天前
09-04-生态-UOS CDN与服务器部署
unity3d·游戏开发
寂寞的船3 天前
【Unity知识速递】第10期 Unity GC 零分配实战:从 UnityEngine.Pool 到手动 GC 控制的全链路优化
jvm·unity·c#·游戏引擎·lucene
SmalBox3 天前
09-03-生态-与GameFramework-xAsset等框架集成
unity3d·游戏开发
Martina_03214 天前
AI生成3D场景的霓虹灯一开就糊成光团?用6步检查Emissive、Bloom与曝光
人工智能·3d·ai·自然语言处理·游戏引擎·材质·贴图
SmalBox4 天前
09-02-生态-小游戏平台适配
unity3d·游戏开发
SmalBox4 天前
09-01-生态-YooAsset+HybridCLR热更新方案
unity3d·游戏开发
寂寞的船5 天前
【Unity知识速递】第8期 IL2CPP 托管堆内存碎片与原生堆交互机制深度解析
unity·游戏引擎·交互