Unity API详解——Rigidbody类

article/2025/10/19 15:49:10

Rigidbody类的功能是用来模拟GameObject对象在现实世界中的物理特性,包括重力、阻力、质量、速度等。对RIgidbody对象属性的赋值代码通常放在脚本的OnFixedUpdate()方法中。本博客主要介绍Rigidbody类的一些实例属性和实例方法,最后对Rigidbody类中功能相近、关联性较强的API之间的关系进行了注解。

一、Rigidbody类实例属性

在Rigidbody类中,涉及的实例属性有collisionDectionMode、drag、inertiaTensor、mass和velocity,下面介绍这些属性。

1、collisionDectionMode属性:碰撞检测模式

(1)基本语法

public CollisionDetectionMode collisionDetectionMode { get ; set; }

(2)功能说明

此属性用于设置刚体的碰撞检测。刚体的碰撞检测模式有3中,即枚举类型collisionDetectionMode的三个值。

Discrete:静态离散检测模式,为系统的默认设置。在此模式下,只有在某一帧中一个刚体的上方,而下一帧移动到了另一个刚体的下方,这样就会发生穿越现象。

Continuous:静态连续检测模式,一般用在高速运动刚体的目标碰撞体上,防止被穿越,检测强度比Discrete强

ContinuousDyamic:最强的连续动态检测模式,一般用在两个高速运动的物体上,防止互相穿越。其计算消耗最大,一般情况下慎用

总之,无论那种检测模式都有可能被穿越,为了防止穿越现象的发生,除了设置其碰撞检测模式外,还要适当增加两物体碰撞器的厚度,一般不要小鱼0.1,同时尽量降低两物体碰撞时的相对速度。

(3)代码实现

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class CollisionDectionMode_test : MonoBehaviour
{public Rigidbody A, B;Vector3 v1, v2;void Start(){A.useGravity = false;B.useGravity = false;v1 = A.position;v2 = B.position;}void OnGUI(){if(GUI.Button(new Rect(10.0f,10.0f,200.0f,45.0f),"Discrete模式不被穿越")){inists();A.collisionDetectionMode = CollisionDetectionMode.Discrete;B.collisionDetectionMode = CollisionDetectionMode.Discrete;A.velocity = new Vector3(0.0f, -10.0f, 0.0f);}if (GUI.Button(new Rect(10.0f, 60.0f, 200.0f, 45.0f), "Discrete模式被穿越")){inists();A.collisionDetectionMode = CollisionDetectionMode.Discrete;B.collisionDetectionMode = CollisionDetectionMode.Discrete;A.velocity = new Vector3(0.0f, -40.0f, 0.0f);}if (GUI.Button(new Rect(10.0f, 110.0f, 200.0f, 45.0f), "Continuous模式不被穿越")){inists();A.collisionDetectionMode = CollisionDetectionMode.Continuous;B.collisionDetectionMode = CollisionDetectionMode.Continuous;A.velocity = new Vector3(0.0f, -20.0f, 0.0f);}if (GUI.Button(new Rect(10.0f, 160.0f, 200.0f, 45.0f), "Continuous模式被穿越")){inists();A.collisionDetectionMode = CollisionDetectionMode.Continuous;B.collisionDetectionMode = CollisionDetectionMode.Continuous;A.velocity = new Vector3(0.0f, -15.0f, 0.0f);B.velocity = new Vector3(0.0f, 15.0f, 0.0f);}if (GUI.Button(new Rect(10.0f, 210.0f, 200.0f, 45.0f), "ContinuousDynamic模式")){inists();A.collisionDetectionMode = CollisionDetectionMode.ContinuousDynamic;B.collisionDetectionMode = CollisionDetectionMode.ContinuousDynamic;A.velocity = new Vector3(0.0f, -200.0f, 0.0f);B.velocity = new Vector3(0.0f, 200.0f, 0.0f);}if (GUI.Button(new Rect(10.0f, 260.0f, 200.0f, 45.0f), "重置")){inists();}}//初始化A、Bvoid inists(){A.position = v1;A.rotation = Quaternion.identity;A.velocity = Vector3.zero;A.angularVelocity = Vector3.zero;B.position = v2;B.rotation = Quaternion.identity;B.velocity = Vector3.zero;B.angularVelocity = Vector3.zero;}
}

在这段代码中,首先声明了两个Rigidbody变量A、B和两个Vector3变量v1、v2,然后再Start方法中设置A、B的useGiavity属性为false,并将A、B的Position赋值给v1和v2,然后再OnGUI方法中定义了多个Button,用来演示Discrete、Continuous和ContinuousDynamic的功能。最后顶一个一个inists方法,用于重置变量A、B对应刚体的状态。

①新建一个Cube立方体,将C#脚本挂载在立方体上
在这里插入图片描述
②新建一个子立方体,选择添加一个组件,单击physics;弹出新的窗口,单击rigidbody(刚体)
在这里插入图片描述
③将变量A、B指定为Cube2、Cube3
在这里插入图片描述
④查看像真实的物体一样接受摩擦力和重力,还可以与其他物体发生相互碰撞效果
在这里插入图片描述


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

相关文章

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

Unity 3D 中的 Rigidbody 可以为游戏对象赋予物理特性,使游戏对象在物理系统的控制下接受推力与扭力,从而实现现实世界中的物理学现象。 我们通常把在外力作用下,物体的形状和大小(尺寸)保持不变,而且内部…

【Unity3D】刚体组件Rigidbody

1 前言 刚体(Rigidbody)是运动学(Kinematic)中的一个概念,指在运动中和受力作用后,形状和大小不变,而且内部各点的相对位置不变的物体。在 Unity3D 中,刚体组件赋予了游戏对象一些运…

【Unity】11.2 刚体(Rigidbody)

分类:Unity、C#、VS2015 创建日期:2016-05-02 一、简介 Rigidbody(刚体)组件可使游戏对象在物理系统的控制下来运动,刚体可接受外力与扭矩力,使游戏对象像在真实世界中那样进行运动。 任何游戏对象&…

【Physics】一、Rigidbody 刚体

文章目录 1、刚体组件2、刚体脚本2.1、获取刚体2.2、添加力2.3、Move 点击访问官网 物理系统 、刚体概述 、 刚体 (Rigidbody) 1、刚体组件 刚体 (Rigidbody) 使游戏对象的行为方式受物理控制。刚体可以接受力和扭矩,使对象以逼真的方式移动。任何游戏对象都必须包…

Unity物理组件之刚体Rigidbody

一、刚体组件简介 1、刚体简介 刚体:Rigidbody,属于物理类组件 作用:添加了刚体组件的游戏物体,可以在物体系统的控制下来运动,刚体可接受外力和扭矩力用来保证游戏对象像在真实世界中那样进行运动。任何游戏对象只有添加了刚体…

【Untiy学习笔记】Rigidbody组件及其常用函数

前言 提示:声明:此篇文章是个人学习笔记,并非教程,所以内容可能不够严谨。可作参考,但不保证绝对正确。如果你发现我的文章有什么错误,非常欢迎指正,谢谢哦。 本文大部分内容来自官方文档&…

mac快速锁屏方法

方法一. 快捷键:controlcommandQ。 方法二. 点击左上角apple logo,锁定屏幕。 方法三(快捷方便). 系统偏好设置->调度中心->触发角->选一个角(左上、左下、右上、右下)->锁定屏幕或者将显示器…

mac修改cmd+ctrl+q锁定屏幕快捷键

mac里的cmdctrlq快捷键是系统快捷键,用作“锁定屏幕”: 这个快捷键优先级很高,导致无法设置其为其他应用快捷键(如qq)。 下面的方法可以把“锁定屏幕”改成其他快捷键,从而腾出cmdctrlq来给应用程序&#…

mac 设置mysql登录快捷键_史上最详细的苹果Macbook快捷键使用

电脑快捷键可以帮助你提高工作效率,是使用电脑过程中经常用到的,苹果电脑的快捷键和普通PC不太一样,对于新手来说,经常找不到或不知道快捷键是什么,经常要去查,所以这边系统城小编跟大家介绍macbook快捷键的…

Mac提高效率的快捷键

分享常用的一些快捷键,欢迎补充,一起提高办公效率 目录 常用按键介绍系统管理关机和睡眠偏好设置触摸板、键盘和鼠标 窗口管理(最小化、关闭、退出)目录(文件夹)文本和文件操作撤销、重做复制、剪切全选查找…

mac系统修改锁屏快捷键

mac 自带了锁屏的快捷键,我忘了是什么了,点击屏幕左上角的苹果图标,就能看到。反正比较麻烦,没windows下方便,。 习惯了在windows下,按winL键来锁屏。在mac下,怎么改成commandL来锁屏呢? 方法…

macbook 常用键盘快捷键大全 mac os 苹果电脑

为了让刚开始使用 Mac 的新手更快地上手,特整理了这一份“最值得你记住的 Mac 常用快捷键列表”,希望可以帮助到大家更快地学习和查找 macOS 的键盘快捷键,以此提高 Mac 的操作效率…… 与 Windows 的差异 一切开始前,我们先来认识…

mac键盘快捷键大全

macos下都有哪些Mac 键盘快捷键呢?不少果粉抱怨高上大的macbook不好用,相比于之前习惯了Windows操作的用户们,转战到mac的阵营还真是会觉得不大习惯呢。觉得不好用的朋友很可能就在于你不知道mac的这些快捷键呐,下文小编就为大家整理好mac的一些常用快捷键,需要的朋友快去…

MacOS VSCode 常用快捷键配置

📌 2023-03-28 更新 VSCode 回到上一步光标位置 (macOS)默认快捷键: 回退上一次编辑:ctrl - 跳转下一次编辑位置:ctl shift - (建议修改)修改快捷键: 快捷键中搜索…

MAC OS常用快捷键一览

切换输入法:Cmd Space 截屏:Shift Cmd 3 部分截屏:Shift + Cmd + 4 屏幕反色快捷键:Option + Cmd + F5 (需要勾选反色选项) 复制/剪切/粘贴/全选&#xff…

Mac 键盘快捷键

Mac 键盘快捷键 您可以按下某些组合键来实现通常需要鼠标、触控板或其他输入设备才能完成的操作。 要使用键盘快捷键,请按住一个或多个修饰键,然后按快捷键的最后一个键。例如,要使用 Command-C(拷贝),请按住 Command 键并按 C 键,然后同时松开这两个键。Mac 菜单和键…

苹果mac休眠快捷键_Mac电脑睡眠、退出登录和关机快捷键有哪些?技巧来啦!

有很多刚开始使用,甚至一些使用了很久Mac系统的人,可能不知道关机快捷键,只能通过点击屏幕左上角的苹果,然后选择其中的“关机”(Shut Down),然后在弹出的对话框中点击确认,才能实现整个关机的过程&#xf…

mac的快捷键(日常使用)

文章目录 1. 官方所有的快捷键1.1 剪切、拷贝、粘贴和其他常用快捷键1.2 睡眠、退出登录和关机快捷键1.3 访达和系统快捷键1.4 启动快捷键 2. 我日常使用的2.1 在访达中快速定位文件2.2 快速新建窗口2.3 其他 3. 常用软件快捷键3.1 word3.2 mac录屏3.3 重置应用3.4 hosts文件问…

苹果锁定计算机的快捷键,苹果电脑快捷键使用 Mac快捷键大全详细介绍

相信有很多刚开始使用苹果电脑操作系统的用户,都并不了解整个MAC操作系统,就连一般快捷键的使用都不清楚,这让人很感觉很苦恼。下面,小编就来向大家分享一下Mac快捷键大全的详细介绍,记住这些常用的快捷键,…

MacBook常用快捷键有哪些?

现在使用MacBook的小伙伴越来越多,为了让初次使用的新手和小白们更快地上手,小编为大家整理了这一些 Mac 常用快捷键,虽然都是比较基础的入门知识,但也能帮助到大家更快地学习和查找 macOS 的键盘快捷键,提高电脑的操作…