Unity 3D 物理引擎简介 || Unity 3D 物理材质|| Unity 3D 力(AddForce)

news2025/1/20 10:51:34

Unity 3D 物理引擎简介

早期的游戏并没有强调物理引擎的应用,当时无论是哪一种游戏,都是用极为简单的计算方式做出相应的运算就算完成物理表现,如超级玛丽和音速小子等游戏。

较为常见的物理处理是在跳跃之后再次落到地上,并没有特别注重物理表现效果。

当游戏进入三维时代后,物理表现效果的技术演变开始加速,三维呈现方式拓宽了游戏的种类与可能性,越来越好的物理表现效果需求在短时间内大幅提升。

如何制作出逼真的物理互动效果,而又不需要花费大量时间去撰写物理公式,是物理引擎重点要解决的问题。

在 Unity 3D 内的 Physics Engine 引擎设计中,使用硬件加速的物理处理器 PhysX 专门负责物理方面的运算。

因此,Unity 3D 的物理引擎速度较快,还可以减轻 CPU 的负担,现在很多游戏及开发引擎都选择 Physics Engine 来处理物理部分。

在 Unity 3D 中,物理引擎是游戏设计中最为重要的步骤,主要包含刚体、碰撞、物理材质以及关节运动等。

游戏中物理引擎的作用是模拟当有外力作用到对象上时对象间的相互影响,比如赛车游戏中,驾驶员驾驶赛车和墙体发生碰撞,进而出现被反弹的效果。

物理引擎在这里用来模拟真实的碰撞后效果。通过物理引擎,实现这些物体之间相互影响的效果是相当简单的。


Unity 3D 物理材质

Unity 3D 物理材质是指物体表面材质,用于调整碰撞之后的物理效果。

Unity 3D 提供了一些物理材质资源,通过资源添加方法可以添加到当前项目中。

标准资源包提供了 5 种物理材质:

  • 弹性材质(Bouncy)。

  • 冰材质(Ice)。

  • 金属材质(Metal)。

  • 橡胶材质(Rubber)。

  • 木头材质(Wood)。

基础操作

  • 在菜单中执行 Assets → Create → Physics Material 便可将物理材质应用在需要的地方。

  • 执行创建物理材质的命令后,在对应的 Inspector 面板上的物理材质设置界面。

参考列表

选项含义描述
Dynamic Friction动态摩擦力当物体移动时的摩擦力,通常为 0〜1,值为 0 时效果像冰, 而值为 1 时物体运动将很快停止。
Static Friction静态摩擦力当物体在表面静止时的摩檫力,通常为 0〜1。值为 0 时效 果像冰,值为 1 时使物体移动十分困难。
Bounciness弹力值为 0 时不发生反弹,值为 1 时反弹不损耗任何能量。
Friction Combine Mode摩擦力组合方式定义两个碰撞物体的摩擦力如何相互作用。
Bounce Combine反弹组合定义两个相互碰撞的物体的相互反弹模式。
Friction Direction 2摩擦力方向 2方向分为 x 轴y 轴z 轴
Dynamic Friction 2动态摩擦力 2动摩擦系数,它的摩擦方向根据 Friction Direction 2 确定。
Static Friction 2静态摩擦力 2静摩擦系数,它的摩擦方向根据 Friction Direction 2 确定。

 Unity 3D 力(AddForce)

力是在物体之间的相互作用过程中表现出来的,在物理学中力是非常重要的元素。

力的种类有很多,刚体组件因为受到力的作用而进行加速或抛物线运动。

Unity 3D 中通过 rigidbody.AddForce(x,y,z)方法添加力的作用,该方法的参数:

  • 施加力的方向。

  • 参数大小代表了力的大小。

实践案例

游戏中物体受力是对现实现象的模拟。

本案例通过对小球施加力的作用产生与发生盒子碰撞的效果:

在 Unity 3D 内创建一个简单的 3D 场景,场景内放有 1 个 Sphere,1 个 Plane 和 3 个 Cube

Plane 用于充当地面,Sphere 和 Cube 用于做力的测试。

在初始场景中 Cube 处于静止状态,通过 Sphere 瞬间施加一个力,使 Cube 运动。

实施步骤

  1. 创建游戏对象。

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

执行菜单栏中的 GameObject → 3D Object → Cube 命令,创建 3 个立方体盒子,在右侧的 Inspector 面板中分别设置 3 个立方体盒子的位置(0,0.5,-5),(0.5,1.5,-5)(0.5,2.5,-5)。

执行菜单栏中的 GameObject → 3D Object → Sphere 命令,在 Inspector 面板中设置球体位置属性(-1,0.5,-7)。

  1. 美化场景。

为球体、立方体及地面贴材质。

  1. 选中球体,执行菜单栏中的 Component → Physics → Rigidbody 命令。

为球体和立方体添加刚体属性。

  1. 创建 JavaScript 脚本,双击将其打开,输入下列代码。

 
  1. var addForceObj:GameObject;
  2. function Start(){
  3. addForceObj=GameObject.Find("Sphere");
  4. }
  5. function OnGUI(){
  6. if(GUILayout.Button("force", GUILayout.Height(50))) addForceObj.rigidbody.AddForce(500, 0, 1000);
  7. }

  1. 保存脚本并将其链接到球体上,进行测试。

小球会受到力的作用向前运动,并与立方体发生碰撞。

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

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

相关文章

百万级数据的导出解决方案

一、传统POI的的版本优缺点比较首先我们知道POI中我们最熟悉的莫过于WorkBook这样一个接口,我们的POI版本也在更新的同时对这个几口的实现类做了更新;HSSFWorkbook : 这个实现类是我们早期使用最多的对象,它可以操作Excel2003以前&#xff08…

SAP 系统内核版本详解

前言:之前两篇简单介绍了ABAP 7.40的新特性,那么有的时候会有这样的情况,根据新特性写代码的时候校验会不通过,这又是为啥呢?会不会跟SAP的版本有关系呢? 那么,首先我们就来看一下在SAP系统中如…

基于TC397的Bootloader开发过程中遇到的问题记录

问题11 现象:刷新流程结束之后上位机通过22服务AFFC读取刷新计数时,刷新计数会偶发地置12 分析思路:尝试用单步调试的方法复现该现象,程序中涉及到刷新计数的更新有两处,一是在34服务中擦flash前,二是在31服…

【数据结构】栈及其经典面试题详解

目录前言一、栈的介绍二、数据类型重定义三、栈的结构四、栈中的常见操作五、测试栈六、栈的常见面试题前言 前面学习的线性表中包含顺序表和链表,这两种数据结构允许在任意位置进行插入和删除,那么有没有一种数据结构是不能在任意位置进行插入删除&…

全面解读MinION纳米孔测序技术及应用

全面解读MinION纳米孔测序技术及应用 link:https://www.seqchina.cn/467.html 【测序中国】 paper:The Oxford Nanopore MinION: delivery of nanopore sequencing to the genomics community https://pubmed.ncbi.nlm.nih.gov/27887629/ 纳米孔测序技术…

知识蒸馏 Knowledge distillation(学习笔记)

知识蒸馏概述 蒸馏:把大的 复杂的东西变成小的纯净的东西 在知识蒸馏中 大的模型为 教师模型(teacher)臃肿 集成 牛逼 复杂的 小的 为 学生模型(student)小的精干的 轻量化的 这里有一个知识的迁移 因为落地实…

相关性模型与回归模型(例题代码)

一、相关性模型(SPSS) 相关性模型涉及到两种最为常用的相关系数: 皮尔逊person相关系数斯皮尔曼spearman等级相关系数 1、皮尔逊相关系数 相关性可视化 总结: 1.如果两个变量本身就是线性的关系,那么皮尔逊相关系…

儿子小伟再婚,新儿媳紧锁眉头,农民歌唱家大衣哥有些过分了

虽然都知道大衣哥儿子小伟结婚,这一天早晚都要到来,但是却没有想到来得那么快,大衣哥儿子小伟的婚礼,在悄无声息中结束了。说起大衣哥儿子小伟,这已经不是第一次结婚了,因为结过婚有经验,这一次…

Linux CFS调度器之pick_next_task函数

文章目录前言一、pick_next_task二、pick_next_task_fair参考资料前言 在内核执行__schedule函数,进程任务切换的时候,__schedule函数函数会调用pick_next_task让调度器从就绪队列中选择最合适的一个进程运行,如下所示: static …

Nerdctl 原生支持 Nydus 加速镜像

文|李楠(GitHub ID : loheagn) 北京航空航天大学 21 级研究生 云原生底层系统的开发和探索工作。 本文 6369 字 阅读 16 分钟 OSPP 开源之夏是由中科院软件研究所“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动。旨在鼓励在…

关于whl,你想知道的

一、whl是什么?whl文件时以wheel格式保存的python安装包,Wheel是Python发行版的标准内置包格式。WHL文件包含Python安装的所有文件和元数据,其中还包括所使用的Wheel版本和打包的规范。WHL文件使用Zip压缩进行压缩,实际上也是一种…

二、TCO/IP---Ethernet和IP协议

TCP/ip协议栈 OSI模型TCP/IP协议栈应用层,表示层,会话层应用层传输层主机到主机层(传输层)网络层网络层数据链路层,物理层网络接入层 Ethernet协议 以太网,实现链路层的数据传输和地址封装(MA…

【Qt】Qt中的拖放操作实现——拖放文件以及自定义拖放操作

文章目录Qt的拖放操作使用拖放打开文件自定义拖放操作文章参考《Qt Creator快速入门(第三版)》。 Qt的拖放操作 拖放操作分为拖动Drag和放下Drop,Qt提供了强大的拖放机制,可在帮助文档中通过Drag and Drop关键字查看。 在Qt中&a…

ArcGIS基础实验操作100例--实验78按栅格分区统计路网

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 高级编辑篇--实验78 按栅格分区统计路网 目录 一、实验背景 二、实验数据 三、实验步骤 (…

【数据结构】队列详解

前言 前面我们学习了一种数据结构:栈,栈是一种只允许在一端尽进行插入删除的数据结构,而今天我们将学习另一种数据结构:队列,队列是一种支持在一端进行插入,在另一端进行删除的数据结构。 一、队列的介绍…

PHP反序列化字符串逃逸

PHP反序列化字符串逃逸 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录PHP反序列化字符串逃逸前言一、关于反序列化和序列化二、[0ctf 2016]unserialize二、prize_p5[NSSCTF]前言 例如:最近日常刷题玩…

常用的传输码介绍

文章目录前导知识1.AMI码2.HDB3码3.PST码4.数字双相码5.CMI码6.nBmB码前导知识 在介绍常用的传输码之前,先简单介绍一下直流分量。 信号的直流分量就是信号的平均值,它是一个与时间无关的常数,直流分量的数学公式表示为: 判断有…

基于轻量级YOLOv5+Transformer的汽车车损检测识别分析系统

将传统NLP领域提出来的Transformer技术与yolo目标检测模型融合已经成为一种经典的做法,早在之前的很多论文里面就有这种组合应用的出现了,本文主要是借鉴前文的思路,开发基于yolov5transformer的汽车车损检测识别模型,首先看下效果…

光流相关总结

基于图像亮度恒定假设, 图像亮度:I(x⃗,t)I(\vec x, t)I(x,t), 其中x⃗[x,y]\vec x[x,y]x[x,y],那么亮度恒定假设: I(x⃗,t)I(x⃗δx⃗,tδt)(1)I(\vec x,t)I(\vec x \delta \vec x, t \delta t) (1)I(x,t)I(xδx,tδt)(1) 对上式…

2022年值得记录的一年,事与愿违的一年

年初带着对生活的不满、怀才不遇的傲慢; 愿即将到来的30岁不留遗憾; 你放下所有去追求向往的样子; 那时所有的空气都是清新的,即使它满是灰尘; 不再年少的你依然充满新奇; 用尽力气把自己钉在那个不属…