Unity3d物理引擎

article/2025/11/4 23:16:09

一、定义

物理引擎就是在游戏中模拟真实的物理效果,比如,场景中有一个立方体和一个球体,球体在空中,立方体在地面倾斜放置,在空中的球体开始自由下落,然后与地面上的立方体对象发生碰撞,而物理引擎就是用来模拟真实碰撞的效果。

二、刚体

Rigidbody(刚体)组件可使游戏对象在物理系统的控制下来运动,任何游戏对象只有添加了刚体组件才能受到重力的影响。

案例1:点击鼠标左键,给物体加一个力

if(Input.GetButton("Fire1"))

{

      Rigidbody r = go.GetComponent<Rigidbody>();//从预设体身上获取刚体组件

r.AddForce(0, 0, 1000);//给预设体加力

}

案例2:用键盘控制物体移动

public float speed;

private Rigidbody rig;

void Start () {

rig = GetComponent<Rigidbody> ();

}

void Update () {

float h = Input.GetAxis ("Horizontal");

float v = Input.GetAxis ("Vertical");

Vector3 pos = new Vector3 (h, 0, v);

rig.velocity = pos * speed;

}

三、碰撞器

碰撞器分类:

盒形碰撞器、球形碰撞器、 胶囊碰撞器、 网格碰撞器、 车轮碰撞器等

碰撞的必备条件:

1、两个物体要有碰撞器

2、一个物体要有刚体

四、物理材质

五、碰撞检测

在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器。这两种方式的应用非常广泛。

(一)碰撞器是一群组件,包含了很多种类,比如:Box Collider,Capsule Collider等,这些碰撞器应用的场合不同,但必须加到GameObject身上。

(二)所谓触发器,只需要在检视面板中碰撞器组件中勾选Is Trigger属性选择框。

(三)给主角添加刚体(Rigidbody)组件,并且取消刚体组件的重力选项UseGravity。

  1. 碰撞器

// 碰撞接触的那一帧被调用  

    void OnCollisionEnter(Collision collision) {  

        Debug.Log("enter");  

        Debug.Log(collision.gameObject.name);  

    }  

    // 碰撞接触的每帧都被调用  

    void OnCollisionStay(Collision collision) {  

        Debug.Log("Stay");  

    }  

    // 碰撞结束被调用  

    void OnCollisionExit(Collision collision) {  

        Debug.Log("Exit");  

    }  

2.触发器

触发器可以穿透,所以把重力去掉

// 触发接触的那一帧被调用  

    void OnTriggerEnter(Collider other) {  

        Debug.Log("enter");  

        Debug.Log(other.gameObject.name);  

    }  

    //触发接触的每帧都被调用  

    void OnTriggerStay(Collider other) {  

        Debug.Log("Stay");  

    }  

    // 触发结束被调用  

    void OnTriggerExit(Collider other) {  

        Debug.Log("Exit");  

    }  

六、标签

Tags是Unity引擎里面的标签,是用来对GameObject进行标识的属性,Tags常用于单个GameObject,添加Tags的操作如下:

tag可以理解为一类元素的标记,如player、enemy、apple-tree等。

void OnTriggerEnter(Collider other)

{

        if(other.tag == "Player")

        {

            print("碰到玩家");

        }

        if (other.tag.CompareTo("Player")==0)

        {

            print("碰到玩家");

        }

if (other.CompareTag("Player"))

{

print("碰到玩家");

}

 }

通常用标签管理类来管理标签

public class TagsManager  {

public const string Player = "Player";

public const string Enemy = "Enemy";

}

七、粒子系统


http://chatgpt.dhexx.cn/article/i8EAQDMP.shtml

相关文章

Unity和UE4两大游戏引擎,你该如何选择?

目录 游戏引擎 2 ——> 难易区别 编程语言 3 ——> 游戏产品 UE4制作的游戏产品 Unity制作的游戏产品 产品类型 5 ——> 资源商店 6 ——> 人才需求 平均薪资 总结 游戏引擎 Unity和UE4都是游戏引擎&#xff0c;所谓游戏引擎就是集成了复杂功能的游戏…

赞美之外,Unity引擎3D引擎存在什么弊病?

由于手游业界各大公司对该引擎的认可和追逐&#xff0c;自2013年开始&#xff0c;Unity大会成为了行业内最火爆的大会之一。在信息丰富的网络上&#xff0c;我们可以看到满屏的Unity教程和优点的介绍&#xff0c;但这款引擎是否存在着弊病呢?带着这个问题&#xff0c;我们采访…

Unity3d是目前主流的游戏开发引擎

Unity3d是目前主流的游戏开发引擎&#xff0c;它提供了一个整合的编辑器、跨平台发布、地形编辑、着色器&#xff0c;脚本&#xff0c;网络&#xff0c;物理&#xff0c;版本控制等特性。Unity3d可以开发桌面版、web版、手机版的游戏&#xff0c;是一个非常理想的三维游戏开发平…

Unity3D 游戏引擎之构建简单的游戏世界(三)

Unity3D 游戏引擎之构建简单的游戏世界 雨松MOMO原创文章如转载&#xff0c;请注明&#xff1a;转载至我的独立域名博客雨松MOMO程序研究院&#xff0c;原文地址:http://www.xuanyusong.com/archives/473 创建游戏地面 创建一个新的游戏工程名称命名为FirstGame&#xff0c;场景…

Unity3d 引擎原理详细介绍

体系结构 为了更好地理解游戏的软件架构和对象模型&#xff0c;它获得更好的外观仅有一名Unity3D的游戏引擎和编辑器是非常有用的&#xff0c;它的主要原则。 Unity3D 引擎 Unity3D的是一个屡获殊荣的工具&#xff0c;用于创建交互式3D应用程序在多个平台.Unity3D由游戏引擎和…

Unity3D游戏引擎最详尽基础教程

关注公众号 风色年代&#xff08;itfantasycc&#xff09; 200G Unity资料合集送上~ 转自&#xff1a;http://blog.sina.com.cn/s/blog_7c336a8301013son.html 我一直向所有想做游戏的朋友推荐Unity3D&#xff0c;为什么呢&#xff1f;首先是因为专业&#xff0c;Unity3D非常强…

30分钟了解所有引擎组件,132个Unity 游戏引擎组件速通!【收藏 == 学会】

前言 &#x1f3ac;【全网首发】 | 30分钟了解所有组件&#xff0c;132个Unity 游戏引擎组件速通&#xff01;一、Mesh 网格1.Mesh Filter2.Mesh Renderer3.Skinned Mesh Renderer4.Text Mesh5.TextMeshPro-Text 二、Effects 特效组件1.Particle System2.Visual Effect3.Trail …

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

Unity 3D 物理引擎简介 早期的游戏并没有强调物理引擎的应用&#xff0c;当时无论是哪一种游戏&#xff0c;都是用极为简单的计算方式做出相应的运算就算完成物理表现&#xff0c;如超级玛丽和音速小子等游戏。 较为常见的物理处理是在跳跃之后再次落到地上&#xff0c;并没有…

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

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

垃圾收集器及算法

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

垃圾收集器-CMS

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

Java经典垃圾收集器

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

GC 垃圾收集器

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

7种垃圾收集器

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

垃圾收集器简介

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

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

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

JVM垃圾收集器

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

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

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

Java 的七种垃圾收集器

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

Java 垃圾收集器

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