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

article/2025/11/5 3:48:22

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://chatgpt.dhexx.cn/article/9we5IqNo.shtml

相关文章

Unity游戏引擎介绍及相关学习资源

Unity(游戏引擎)一般指Unity3D 官网: https://unity.com/ 手册:https://docs.unity3d.com/Manual/ Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的…

垃圾收集器及算法

一、垃圾收集算法 1.分代收集理论 当前虚拟机的垃圾收集都采用分代收集算法,只是根据对象存货周期的不同将内存分为几块。一般java堆分为新生代和老年代,可以根据各个年代的特点选择合适的垃圾收集算法。比如在新生代中,每次收集都会有大量的…

垃圾收集器-CMS

CMS垃圾收集器 文章目录 CMS垃圾收集器前言一、CMS是什么?二、CMS收集的步骤1.初始标记2.并发标记3.重新标记4.并发收集 三、核心参数四、总结 前言 相信大家都或多或少的了解过hotspot虚拟机的垃圾收集器,无论是初代的serialGc(单线程的垃圾收集器)&am…

Java经典垃圾收集器

经典垃圾收集器 1.Serial收集器2.ParNew收集器3.Parallel Scavenge收集器4.Serial Old收集器5.Parallel Old收集器6.CMS收集器7.Garbage First收集器 1.Serial收集器 Serial收集器是最基础,历史最久远的收集器,是一款新生代收集器,新生代收集…

GC 垃圾收集器

GC 垃圾回收算法 和 垃圾收集器之间的关系是什么呢 ? GC算法 (复制 / 标清 / 标整 ) 是内存回收的一种思想 , 垃圾收集器就是 GC算法 的落地实现我们知道没有最完美的 GC算法 , 因此目前为止也没有完美的垃圾收集器 , 只是针对不同的情况选择最适合的收集器来进行分代收集 主要…

7种垃圾收集器

如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。 Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商、版本的虚拟机所提供的垃圾收集器都可能会有很大差别,并且一般都会提供参数供用户根据…

垃圾收集器简介

HotSpot JVM收集器 上面有7中收集器,分为两块,上面为新生代收集器,下面是老年代收集器。如果两个收集器之间存在连线,就说明它们可以搭配使用。 Serial(串行GC)收集器 Serial收集器是一个新生代收集器,单线程执行&…

【JVM】7种经典的垃圾收集器

文章目录 1. 垃圾收集器概述2. Serial 收集器3. ParNew 收集器4. Paraller Scavenge 收集器5. Serial Old收集器6. Parller Old收集器7. CMS 收集器8. Garbage First 收集器 本文参考:深入理解Java虚拟机:JVM高级特性与最佳实践(第3版&#x…

JVM垃圾收集器

一.概述 GC需要完成的三件事:1.哪些内存需要回收? 2.什么时候回收? 3.如何回收 Java内存运行时区域的各个部分: a. 其中程序计数器、虚拟机栈、本地方法栈三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行…

垃圾收集算法与垃圾收集器

典型的垃圾收集算法 1.Mark-Sweep(标记-清除)算法 这是最基础的垃圾回收算法,之所以说它是最基础的是因为它最容易实现,思想也是最简单的。标记-清除算法分为两个阶段:标记阶段和清除阶段。标记阶段的任务是标记出所有…

Java 的七种垃圾收集器

用 C 或 C 这样的编程语言写一个应用时,需要编写代码来销毁内存中不再需要的对象。当应用程序扩展得越来越复杂时,未使用对象被忽略释放的可能性就越大。这会导致内存泄露,最终内存耗尽,在某个时刻将没有更多的内存可以分配。结果…

Java 垃圾收集器

堆内存示意图 垃圾收集算法 1.标记-清除算法 算法分为标记和清除两个阶段。标记出所有需要回收的对象,在标记完成后,统一回收。 缺点: 执行效率不稳定,若堆中有大量对象要被回收,这是必须进行大量标记和清除动作&a…

JVM 垃圾收集器

title: “JVM 垃圾收集器” date: 2022-03-11T16:45:2108:00 draft: false 文章目录 引言术语垃圾收集器介绍Serial 收集器(新生代)ParNew收集器(新生代)Parallel Scavenge收集器(新生代)Serial Old 收集器…

详解ZGC垃圾收集器

从G1垃圾收集器开始,后面的垃圾收集器都不再将堆按照新生代和老年代作为整体进行回收,都采用了局部收集的设计思想。 可能是由于G1作为第一代局部收集的垃圾收集器,所以它继续保留了新生代和老年代的概念,笔者认为从局部收集和分…

JVM——垃圾收集器

目录 引言 垃圾收集器 如何判断对象已死? 引用计数算法: 可达性分析算法: 垃圾收集算法 标记-清除算法 标记-复制算法 标记-整理算法 并发的可达性分析 经典垃圾收集器 内存分配与回收策略 1.对象优先在Eden分配 …

jvm垃圾收集器有哪些

Serial收集器 Serial收集器是最基本,发展最悠久的收集器,在JDK1.3.1之前是虚拟机新生代垃圾回收的唯一选择。这个收集器是一个单线程的。它的单线程的意义并不仅仅说明它只会使用一个CPU或者一条收集线程去完成收集工作,最重要的是&#xff…

经典垃圾收集器(三)

低延迟垃圾收集器 衡量垃圾收集器的三项重要指标:内存占用(Footprint)、吞吐量(Throughput)和延迟(Latency)。三者构成了一个“不可能三角” Shenandoah收集器 Shenandoah相比于G1有什么改进&…

垃圾收集器

如果说垃圾回收算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现,java虚拟机实现规范中对垃圾收集器应该如何实现并没有任何规定,因此不同厂商、不同版本的虚拟机提供的垃圾收集器存在很大的差异,接下来我们主要介绍…

深入理解7种垃圾收集器

**如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。**Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商、版本的虚拟机所提供的垃圾收集器都可能会有很大差别,并且一般都会提供参数供用户根…

Java中的垃圾收集器

目录 1、Java的垃圾收集器的分类 2、收集器的特点 3、评估GC的性能指标 4、Serial收集器 5、ParNew收集器 6、Parallel Scavenge 吞吐量优先 (与Parallel Old搭配) 7、CMS收集器 8、G1收集器 9、各种收集器的应用场景 垃圾收集器:垃…