Unity 3D 刚体(Rigidbody)|| Unity 3D 刚体实践案例

news2024/12/28 4:48:45

Unity 3D 中的 Rigidbody 可以为游戏对象赋予物理特性,使游戏对象在物理系统的控制下接受推力与扭力,从而实现现实世界中的物理学现象。

我们通常把在外力作用下,物体的形状和大小(尺寸)保持不变,而且内部各部分相对位置保持恒定(没有形变)的理想物理模型称为刚体。

刚体(Rigidbody)是物理引擎中最基本的组件。通过该组件可以给物体添加一些常见的物理属性,如质量、摩擦力、碰撞参数等。

Unity 3D 提供了多个实现接口,开发者可以通过更改这些参数来控制物体的各种物理状态。

刚体在各种物理状态影响下运动,刚体的属性包含:

  • Mass(质量)

  • Drag(阻力)

  • Angular Drag(角阻力)

  • Use Gravity(是否使用重力)

  • Is Kinematic(是否受物理影响)

  • Collision Detection(碰撞检测)

刚体添加方法

在 Unity 3D 中创建并选择一个游戏对象,执行菜单栏中的 Component → Physics → Rigidbody 命令为游戏对象添加刚体组件。

刚体选项参数

游戏对象一旦被赋予刚体属性后,其 Inspector 属性面板会显示相应的属性参数与功能选项,具体内容如下表所示。

参数含义描述
Mass质量物体的质量(任意单位)。建议一个物体的质量不要与其他物体 相差100倍。
Drag阻力当受力移动时物体受到的空气阻力。0表示没有空气阻力,极 大时使物体立即停止运动。
Angular Drag角阻力当受扭力旋转时物体受到的空气阻力。0表示没有空气阻力, 极大时使物体立即停止旋转。
Use Gravity使用重力该物体是否受重力影响,若激活,则物体受重力影响。
Is Kinematic是否是运动学游戏对象是否遵循运动学物理定律,若激活,该物体不再受物理 引擎驱动,而只能通过变换来操作。适用于模拟运动的平台或 者模拟由铰链关节连接的刚体。
Interpolate插值物体运动插值模式。当发现刚体运动时抖动,可以尝试下面的 选项:None(无),不应用插值;Interpolate(内插值),基于上一巾贞 变换来平滑本帧变换;Extrapolate(外插值),基于下一帧变换来 平滑本帧变换。
Collision Detection碰撞检测碰撞检测模式。用于避免高速物体穿过其他物体却未触发碰 撞。碰撞模式包括Discrete (不连续)、Continuous (连续)、 Continuous Dynamic (动态连续〉3种。其中,Discrete模式用来 检测与场景中其他碰撞器或其他物体的碰撞;Continuous模式 用来检测与动态碰撞器(刚体)的碰撞;Continuous Dynamic模式用来检测与连续模式和连续动态模式的物体的碰撞,适用于 高速物体。
Constraints约束对刚体运动的约束。其中,Freeze Position(冻结位置)表7TC刚体 在世界中沿所选HZ轴的移动将无效,Freeze Rotation(冻结 旋转)表示刚体在世界中沿所选的XYZ轴的旋转将无效。

Unity 3D 刚体实践案例 

刚体使物体符合现实中物理学定律进行运动,任何物体想要受重力影响,都必须包含一个刚体组件。

利用刚体类游戏组件,遵循万有引力定律,在重力作用下,物体会自由落下。

刚体组件还会影响到物体发生碰撞时产生的效果,使物体的运动遵循惯性定律,使其发生碰撞时在运动冲量作用下产生速度。

本案例旨在利用刚体测试重力效果以及碰撞后的交互效果。

案例设计

本案例在 Unity 3D 内创建一个简单的三维场景,场景内放有 Cube 和 PlanePlane 用于充当地面,Cube 用于刚体重力测试。

案例实施

  1. 新建项目,将场景命名为 Rigidbody

  1. 创建游戏对象。

执行 GameObject → 3D Object → Plane 命令,此时在 Scene 视图中出现了一个平面,在右侧的 Inspector 面板中设置平面位置(0,0,-5)。

  1. 创建游戏对象。

在菜单栏中执行 GameObject → 3D Object → Cube 命令,在右侧的 Inspector 面板中设置立方体的位置(0,5,0),按 F2 键可将其重新命名。

  1. 美化场景。

采用纹理贴图的方法将地面和立方体都贴上纹理。

首先,将资源图片放置在项目的根目录 Assets 下,Unity 3D 会自动加载资源。

然后分别选中立方体和平面,将对应的资源图片分别拖到立方体和平面上即可。

  1. 为立方体添加刚体属性。

选中立方体,然后执行菜单栏中的 Component→ Physics → Rigidbody 命令,当右侧的 Inspector 面板中出现了 Rigidbody 属性面板时,即为立方体添加了刚体属性。

  1. 进行初步测试。

置于半空中的立方体由于受到重力作用做自由落体运动,掉落到平面上。

  1. 复制游戏对象。

在 Hierarchy 视图中,选中 Cube1 后按 Ctrl+D 键复制立方体 Cube2 并将其摆放于场景中,在 Inspector 面板中设置新复制的立方体的位置属性(0.4,0.5,0),按此方法再复制一个立方体 Cube3 斜放于 Cube2 上,设置 Cube3 的位置为(0,1.5,0)。

  1. 执行菜单栏的 Component → Physics → Rigidbody 命令为每一个立方体添加刚体属性。

  1. 再次测试。

最上方立方体进行自由落体运动,撞击到地面,盒子发生倒塌。

  1. 创建 JavaScript 脚本文件,输入下列代码:

 
  1. var speed=10;
  2. function OnMouseDrag(){
  3. transform.position+=Vector3.right*Time.deltaTime*Input.GetAxis("MouseX")*speed;
  4. transform.position+=Vector3.up*Time.deltaTime*Input.GetAxis("Mouse Y")*speed;
  5. }

  1. 将脚本分别连接到 3 个立方体上。

  1. 进行最终测试。

本案例世间目标达成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/75771.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3 —— Pinia 的学习指南以及案例分享

文章目录 前言一、什么是pinia?二、为什么要使用Pinia?三、Pinia对比Vuex四、具体使用方法 1.安装2.创建一个store五、state 1.访问state2.重置状态3.修改state4.批量修改state5.替换state六、getters 1.访问getters2.getters传参3.写为普通函数可调用this4.访问其他的store中…

可见光热红外图像融合算法设计

本设计方式中对于多源图像融合算法采用以下三个步骤进行: 多源图像目标特征提取;多源图像配准;多源图像融合。 1.多源图像目标特征提取 多源图像的目标特征提取中,优先对目标图像进行预处理,对于可见光图像…

品牌势能铸就非凡经典,凯里亚德与郁锦香酒店亮相品牌沙龙会烟台站

近日,汇聚国内众多投资人的锦江酒店(中国区)品牌沙龙会烟台站顺利举行。本次沙龙活动以“齐风鲁韵 锦绘未来”为主题,锦江酒店(中国区)旗下众多优秀品牌共同亮相。凯里亚德酒店与郁锦香酒店在本次活动中向投资人展示了在如今复杂多变的酒店市场中如何以强…

Java面向对象:继承

面向对象三大特征之二:继承 目录 面向对象三大特征之二:继承 1.继承是什么: 2.继承的好处 继承概述的总结 1.什么是继承?继承有什么好处? 2.继承的格式是什么样的? 3.继承后子类的特点是什么&#x…

Docker介绍及项目部署

安装Docker 关闭SELINUX服务 SELINUX是CentOS系统捆绑的安全服务程序,因为安全策略过于严格,所以建议搭建关闭这项服务 修改/etc/selinux/config文件,设置SELINUXdisabled vim /etc/selinux/config # 设置SELINUXdisabled# 设置完成后重启…

[附源码]计算机毕业设计姜太公渔具销售系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Crane如何做到利用率提升3倍稳定性还不受损?

作为云平台用户,我们都希望购买的服务器物尽其用,能够达到最大利用率。然而要达到理论上的节点负载目标是很的,计算节点总是存在一些装箱碎片和低负载导致的闲置资源。下图展示了某个生产系统的CPU资源现状,从图中可以看出&#x…

编译器设计(十二)——指令选择

文章目录一、简介二、代码生成三、扩展简单的树遍历方案四、通过树模式匹配进行指令选择4.1 重写规则4.2 找到平铺方案五、通过窥孔优化进行指令选择5.1 窥孔优化5.2 窥孔变换程序六、高级主题6.1 学习窥孔模式6.2 生成指令序列七、小结和展望一、简介 指令选择(in…

java面试题-并发

1. 并行和并发有什么区别? 并行:多个处理器或多核处理器同时处理多个任务。并发:多个任务在同一个 CPU 核上,按细分的时间片轮流(交替)执行,从逻辑上来看那些任务是同时执行。 如下图: 并发 两个队列和一…

从功能测试到自动化测试,待遇翻倍,我整理的超有用工作经验分享~

我想应该有很多测试人员应该有这样的疑虑,自动化测试要怎么去做,现在我把自己的一些学习经验分享给大家,希望对你们有帮助,有说的不好的地方,还请多多指教! 对于测试人员来说,不管进行功能测试还…

从股票市场选择配对的股票:理论联系实际

我们有了计算距离的方法,即共同因子相关系数的绝对值就是衡量协整性的一个好方法。现在看一些实际应用中会遇到的问题。 整合的特定回报的平稳性(Stationarity of Integration Specific Returns) 两个时间序列协整的必要条件是整合的特定回报时序是平稳…

k8s安装3节点集群Fate v1.7.2

采用k8s,而非minikube, 在3个centos系统的节点上安装fate集群。 集群配置信息 3节点配置信息如下图: 当时kubefate最新版是1.9.0,依赖的k8s和ingress-ngnix版本如下: Recommended version of dependent software: Kubernetes:…

Java编码的坑你知多少?

货币计算坑: 这段代码你认为结果是多少? 我们期望的结果是0.4,也应该是这个数字,但是打印出来的却是0.40000000000000036,这是为什么呢? 这是因为在计算机中浮点数有可能(注意是可能&#xff0…

Flask从入门到放弃(介绍、模版语法案例、配置文件、路由本质、CBV整体流程)

文章目录一、Flask介绍二、Flask快速使用三、Flask展示用户信息案例四、Flask配置文件五、路由系统1)路由系统2)路由本质3)Add_url_rule的参数六、Flask的CBV1)CBV的写法2)CBV添加装饰器3)as_view的执行流程…

排名前十的仓库管理系统大盘点(真实测评)!

通过本篇文章,您将了解以下问题:1、国内适合企业的仓库管理系统软件有哪些,排名怎么样?2、企业在选择仓库管理系统时应考虑哪些因素? 目前市场上有多种仓库管理系统,不同的仓库管理系统由于目标市场的不同…

dumi 如何使用?一文教你使用,高效写出你的博客、组件库文档

文章目录一、dumi介绍二、使用 dumi 的两种方式(着重在已成型项目中使用dumi)2.1、基于 dumi 官网带有的脚手架去进行开发2.2、在已成型的项目中引用 dumi 插件,运行项目2.3、dumi中使用scss2.4、如何在组件内写 tsx | md 文档2.4.1、button/…

DataX 二次开发支持 Oracle 更新数据

文章目录1、原理2、源码修改2.1 OracleWriter注释对writeMode的限制2.2 WriterUtil,增加oracle逻辑2.3 CommonRdbmsWriter.Task修改2.4 测试前文回顾: 《DataX 及 DataX-Web 安装使用详解》 《DataX 源码调试及打包》 《DataX-Web 源码调试及打包》 目前…

2022年四川建筑八大员(土建施工员)考试试题及答案

百分百题库提供建筑八大员(土建)考试试题、建筑八大员(土建)考试预测题、建筑八大员(土建)考试真题、建筑八大员(土建)证考试题库等,提供在线做题刷题,在线模拟考试&…

RabbitMQ基础概念

文章目录RabbitMQ介绍AMQPErlang架构模型PublisherConnectionChannelVirtual HostExchangeBindingConsumerRabbitMQ介绍 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Er…

Qt-数据库开发-事务提交(3)

Qt-数据库开发-通过QSqlTableModel显示和修改数据,开启事务 文章目录Qt-数据库开发-通过QSqlTableModel显示和修改数据,开启事务1、概述2、实现效果3、主要代码4、完整源代码更多精彩内容👉个人内容分类汇总 👈👉数据库…