当前位置:网站首页>Unity物理引擎中的碰撞、角色控制器、Cloth组件(布料)、关节 Joint
Unity物理引擎中的碰撞、角色控制器、Cloth组件(布料)、关节 Joint
2022-08-05 05:18:00 【IT学徒.】
简介
在Unity3D中,检测碰撞发生的方式有两种:
- 利用碰撞体
- 利用触发器
在很多游戏引擎或工具中都有触发器,他被用来触发事件
碰撞体与触发器的区别在于:
- 碰撞体是触发器的载体
- 触发器只是碰撞体的一个属性
如果既想要检测到物理的接触,又不想让碰撞检测影响物体的移动,或者要检测一个物体是否经过控件中的某个区域,这是就可以用到触发器
例如:碰撞体适合模拟汽车被撞飞、皮球掉在地上又反弹的效果,而触发器适合模拟人站在靠近门的位置时门自动打开的效果
触发条件
在unity3D中要实现触发检测,需要满足以下条件:
1、两个物体都具有Collider组件
2、至少有一个物体拥有Rigidbody组件
3、至少有一个物体的Collider组件勾选了Is Trigger
触发三阶段:
MonoBehaviour.OnTriggerEnter:当进入触发器时触发
MonoBehaviour.OnTriggerExit:当退出触发器时触发
MonoBehaviour.OnTriggerStay:当逗留在触发器中触发
角色控制器
我们可以使用刚体控制游戏对象行为,刚体会受到里的作用,在与其他刚体发生碰撞的时候,很可能被撞飞,但是在游戏当中大多数时候,我们对于任务角色是不希望产生这种被撞飞的效果的。另外我们在很多时候其实不需要游戏对象按照显示的规律运动,比如说停止运动我们需要角色立即停止运动,如果用刚体去控制物体行为的话,没有办法很好的满足这种需求。
比如,在FPS游戏中,如CS,任务之间是有碰撞,但是不会被碰撞撞飞,停止运动时也不会受到惯性作用,因此,为了更好的满足这样的需求,需要用到角色控制器(Character Controller)。
布料
在游戏中为了游戏的真实感,模拟出更逼真生动的物理效果,例如衣服,头发的摆动等,可以通过美术制作的动画来完成,但是这种制作动画所完成的效果,缺点明显:
- 效果不够真是,动画固定,无法响应不同情况的动态变化。
- 事件成本搞,比如风格大小差别比较大的服装,那么可能需要重新修改模型以及动作。
因此,出现了布料系统,布料系统可以帮助我们更好的去模拟这些效果,在Unity中布料的解决方案有很多,Unity自带的Cloth Component为我们提供了简单实用的封装。
另外,Asset Store上有很多插件如Magica Cloth,Dynamic Bone, Swing Bone, PhysicsBone。如果想要实现更好更精美的效果,可以借助插件来实现。
关节
可以使用关节组件将一个刚体对象附加到另外一个刚体对象或附加到空间中的固定点。关节可活动,关节连接可破坏。
Hinge Joint 铰链关节
1、铰链关节 (Hinge Joint) 将两个刚体组合在一起,对刚体进行约束,让它们就像通过铰链连接一样移动。
2、铰链关节非常适合用于门,但也可用于模拟链条、钟摆等对象
Fixed Joint 固定关节
1、 固定关节 (Fixed Joint) 将对象的移动限制为依赖于另一个对象。这有点类似于管控 (Parenting),但是实现的方式是通过物理系统而不是变换 (Transform) 层级视图。
2、使用固定关节的最佳场合是在希望对象可以轻松相互分离时,或者在没有管控情况下连接两个对象的移动。
Spring Joint 弹簧关节
1、弹簧关节 (Spring Joint) 将两个刚体连接在一起,但允许两者之间的距离改变,就好像它们通过弹簧连接一样
Character Joint 角色关节
1、角色关节 (Character Joint) 主要用于布娃娃效果。此类关节是延长的球窝关节,可在每个轴上限制该关节
Configurable Joint 可配置关节
1、可配置关节 (Configurable Joint) 包含其他关节类型的所有功能,并提供更强大的角色移动控制。
2、当您想要自定义布娃娃的运动并对角色强制实施某些姿势时,这种关节特别有用。
3、使用可配置关节还可以将关节修改为您自行设计的高度专业化关节
边栏推荐
猜你喜欢
随机推荐
六、请求处理—获取请求参数系列注解是怎样工作的?
C语言—三子棋的实现
「实用」运维新手一定不能错过的17 个技巧
读论文-Cycle GAN
沁恒MCU从EVT中提取文件建立MounRiver独立工程
每日一题-寻找两个正序数组的中位数-0713
【UiPath2022+C#】UiPath 练习和解决方案-变量、数据类型和控制流程
基于STM32F407的WIFI通信(使用的是ESP8266模块)
【UiPath2022+C#】UiPath数据类型
每日一题-字典
Redis设计与实现(第一部分):数据结构与对象
将一句话的单词进行倒置(C语言纯代码)
IT系统运行维护方法及策略
你要找的cocos面试答案都在这里了!
HuiFer 带你读懂 BeanFactory getBean 方法
【shell编程】第三章:函数
每日一题-括号生成-0721
基于STM32F407的一个温度传感器报警系统(用的是DS18B20温度传感器,4针0.96寸OLED显示屏,并且附带日期显示)
1004 成绩排名 (20 分)
UE4动画雨滴材质制作教程