Unity物理引擎中的碰撞、角色控制器、Cloth组件(布料)、关节 Joint

本文主要是介绍Unity物理引擎中的碰撞、角色控制器、Cloth组件(布料)、关节 Joint,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Unity物理引擎中的碰撞

  • 简介
  • 触发条件
  • 角色控制器
  • 布料
  • 关节

简介

在Unity3D中,检测碰撞发生的方式有两种:

  • 利用碰撞体
  • 利用触发器

在很多游戏引擎或工具中都有触发器,他被用来触发事件
碰撞体与触发器的区别在于:

  • 碰撞体是触发器的载体
  • 触发器只是碰撞体的一个属性

如果既想要检测到物理的接触,又不想让碰撞检测影响物体的移动,或者要检测一个物体是否经过控件中的某个区域,这是就可以用到触发器
例如:碰撞体适合模拟汽车被撞飞、皮球掉在地上又反弹的效果,而触发器适合模拟人站在靠近门的位置时门自动打开的效果

触发条件

在unity3D中要实现触发检测,需要满足以下条件:
1、两个物体都具有Collider组件
2、至少有一个物体拥有Rigidbody组件
3、至少有一个物体的Collider组件勾选了Is Trigger
触发三阶段:
MonoBehaviour.OnTriggerEnter:当进入触发器时触发
MonoBehaviour.OnTriggerExit:当退出触发器时触发
MonoBehaviour.OnTriggerStay:当逗留在触发器中触发

角色控制器

我们可以使用刚体控制游戏对象行为,刚体会受到里的作用,在与其他刚体发生碰撞的时候,很可能被撞飞,但是在游戏当中大多数时候,我们对于任务角色是不希望产生这种被撞飞的效果的。另外我们在很多时候其实不需要游戏对象按照显示的规律运动,比如说停止运动我们需要角色立即停止运动,如果用刚体去控制物体行为的话,没有办法很好的满足这种需求。
比如,在FPS游戏中,如CS,任务之间是有碰撞,但是不会被碰撞撞飞,停止运动时也不会受到惯性作用,因此,为了更好的满足这样的需求,需要用到角色控制器(Character Controller)。
在这里插入图片描述
在这里插入图片描述

布料

在游戏中为了游戏的真实感,模拟出更逼真生动的物理效果,例如衣服,头发的摆动等,可以通过美术制作的动画来完成,但是这种制作动画所完成的效果,缺点明显:

  1. 效果不够真是,动画固定,无法响应不同情况的动态变化。
  2. 事件成本搞,比如风格大小差别比较大的服装,那么可能需要重新修改模型以及动作。
    因此,出现了布料系统,布料系统可以帮助我们更好的去模拟这些效果,在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、使用可配置关节还可以将关节修改为您自行设计的高度专业化关节

这篇关于Unity物理引擎中的碰撞、角色控制器、Cloth组件(布料)、关节 Joint的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/372648

相关文章

MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据

《MySQLInnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据》mysql的ibdata文件被误删、被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所有表数据... 参考:mysql Innodb表空间卸载、迁移、装载的使用方法注意!此方法只适用于innodb_fi

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx

Vue ElementUI中Upload组件批量上传的实现代码

《VueElementUI中Upload组件批量上传的实现代码》ElementUI中Upload组件批量上传通过获取upload组件的DOM、文件、上传地址和数据,封装uploadFiles方法,使... ElementUI中Upload组件如何批量上传首先就是upload组件 <el-upl

Vue3中的动态组件详解

《Vue3中的动态组件详解》本文介绍了Vue3中的动态组件,通过`component:is=动态组件名或组件对象/component`来实现根据条件动态渲染不同的组件,此外,还提到了使用`markRa... 目录vue3动态组件动态组件的基本使用第一种写法第二种写法性能优化解决方法总结Vue3动态组件动态

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

虚拟机与物理机的文件共享方式

《虚拟机与物理机的文件共享方式》文章介绍了如何在KaliLinux虚拟机中实现物理机文件夹的直接挂载,以便在虚拟机中方便地读取和使用物理机上的文件,通过设置和配置,可以实现临时挂载和永久挂载,并提供... 目录虚拟机与物理机的文件共享1 虚拟机设置2 验证Kali下分享文件夹功能是否启用3 创建挂载目录4

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

基于Qt Qml实现时间轴组件

《基于QtQml实现时间轴组件》时间轴组件是现代用户界面中常见的元素,用于按时间顺序展示事件,本文主要为大家详细介绍了如何使用Qml实现一个简单的时间轴组件,需要的可以参考下... 目录写在前面效果图组件概述实现细节1. 组件结构2. 属性定义3. 数据模型4. 事件项的添加和排序5. 事件项的渲染如何使用

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt