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

相关文章

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

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

vue2 组件通信

props + emits props:用于接收父组件传递给子组件的数据。可以定义期望从父组件接收的数据结构和类型。‘子组件不可更改该数据’emits:用于定义组件可以向父组件发出的事件。这允许父组件监听子组件的事件并作出响应。(比如数据更新) props检查属性 属性名类型描述默认值typeFunction指定 prop 应该是什么类型,如 String, Number, Boolean,

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争

kubelet组件的启动流程源码分析

概述 摘要: 本文将总结kubelet的作用以及原理,在有一定基础认识的前提下,通过阅读kubelet源码,对kubelet组件的启动流程进行分析。 正文 kubelet的作用 这里对kubelet的作用做一个简单总结。 节点管理 节点的注册 节点状态更新 容器管理(pod生命周期管理) 监听apiserver的容器事件 容器的创建、删除(CRI) 容器的网络的创建与删除

简单的角色响应鼠标而移动

actor类 //处理移动距离,核心是找到角色坐标在世界坐标的向量的投影(x,y,z),然后在世界坐标中合成,此CC是在地面行走,所以Y轴投影始终置为0; using UnityEngine; using System.Collections; public class actor : MonoBehaviour { public float speed=0.1f; CharacterCo

火语言RPA流程组件介绍--浏览网页

🚩【组件功能】:浏览器打开指定网址或本地html文件 配置预览 配置说明 网址URL 支持T或# 默认FLOW输入项 输入需要打开的网址URL 超时时间 支持T或# 打开网页超时时间 执行后后等待时间(ms) 支持T或# 当前组件执行完成后继续等待的时间 UserAgent 支持T或# User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器