`
stephen830
  • 浏览: 3011662 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

unity——Rigidbody类 (刚体)

 
阅读更多

unity——Rigidbody类

 

转载自 http://hi.baidu.com/quibos/item/0b035e15e63041b499ce33d8

 

游戏对象添加Rigidbody组件后即具备物理属性,当其受力和扭矩影响时可产生更加真实的行为。当操作刚体参数的时候,你应该在FixedUpdate 函数中使用它,物理模拟以离散的时间步执行。FixedUpdate函数在每一步之前被立即调用。使用刚体时应注意,父物体和子物体不应同时具有刚体,也 不应该缩放刚体的父级。

 

变量:

var velocity : Vector3                            刚体的速度向量

var angularVelocity : Vector3               刚体的角速度向量。

var drag : float                                      物体的阻力

var angularDrag : float                         物体的角阻力

var mass : float                                      刚体的质量

var useGravity : bool                             是否受重力影响

var isKinematic : bool                           

       是否是运动学刚体。运动学刚体不受力、碰撞或关节控制,完全由动画或代码(Transform)驱动,但运动学刚体可以通过碰撞或关节影响其他刚体的运动。非运动学刚体则受力、碰撞或关节控制。

var freezeRotation : bool                      冻结旋转,使物理因素不能改变物体的旋转

var collisionDetectionMode :CollisionDetectionMode

       刚 体的碰撞检测模式。为了获得最佳效果,对于快速移动的物体,应设置动态连续碰撞检测模式(ContinuousDynamic),以防止物体还没检测到碰 撞就穿越了被碰撞物体;对于被碰撞物体,应设置连续碰撞检测模式(Continuous,连续碰撞检测是基于网格几何体的静态碰撞)。由于碰撞检测模式的 选择对物理性能有很大的影响,默认情况下,应采用非连续碰撞检测模式(Discrete)。

var centerOfMass : Vector3                     

       重心。如果你不在脚本中设置重心,它将从所有附加到刚体上的碰撞器自动计算。重心的设置关系到物理运动的真实性。

var worldCenterOfMass : Vector3         在世界坐标中刚体的重心。(只读)

var detectCollisions : bool                     碰撞检测是否启用(默认总是启用的)。

var position : Vector3                             

       刚体的位置,只在物理步结束才应用到变换,不能用于连续移动。

var rotation : Quaternion                       刚体的旋转,只在物理步结束才应用到变换,不能用于连续旋转。

var interpolation : RigidbodyInterpolation

刚体插值,用以平滑物理运动的显示效果,默认是关闭的(None)。物理运动以离散的时间步运行,而显卡以可变的帧率渲染,这可能导致物体抖动。对于主角或相机跟随的物体,建议使用插值。

 

函数:

 

移动

function AddForce (force : Vector3, mode :ForceMode = ForceMode.Force) : void

       添加一个力到刚体。作为结果刚体将开始移动。

       枚举类型ForceMode

       值:       Force                      添加一个可持续力到刚体,使用它的质量。

                     Acceleration          添加一个可持续加速度到刚体,忽略它的质量。

                     Impulse                  添加一个瞬间冲击力到刚体,使用它的质量。

                     VelocityChange     添加一个瞬间速度变化给刚体,忽略它的质量。

function AddForce (x : float, y : float, z: float, mode : ForceMode = ForceMode.Force) : void

       添加一个力到刚体。作为结果刚体将开始移动。

function AddRelativeForce (force : Vector3,mode : ForceMode = ForceMode.Force) : void

       添加一个力到刚体。相对于本地坐标。

function AddRelativeForce (x : float, y :float, z : float, mode : ForceMode = ForceMode.Force) : void

       添加一个力到刚体。相对于本地坐标。

function MovePosition (position : Vector3): void 

       移动刚体到position。

 

旋转

function AddTorque (torque : Vector3, mode: ForceMode = ForceMode.Force) : void

       添加一个转矩到刚体。作为结果刚体将绕着torque轴旋转,torque的长度决定转速。

function AddTorque (x : float, y : float, z: float, mode : ForceMode = ForceMode.Force) : void

       添加一个转矩到刚体。作为结果刚体将绕着torque轴旋转,torque的长度决定转速。

function AddRelativeTorque (torque :Vector3, mode : ForceMode = ForceMode.Force) : void 

       添加一个转矩到刚体,相对于本地坐标。

function AddRelativeTorque (x : float, y :float, z : float, mode : ForceMode = ForceMode.Force) : void

       添加一个转矩到刚体,相对于本地坐标。

function MoveRotation (rot : Quaternion) :void 

       旋转刚体到rot。

 

向物体表面施加力

function AddForceAtPosition (force :Vector3, position : Vector3, mode : ForceMode = ForceMode.Force) : void 

       在position位置应用force力。作为结果这个将在这个物体上应用一个力矩和力。为了效果的真实性,position的位置应在刚体的表面。

 

爆炸

function AddExplosionForce (explosionForce: float, explosionPosition : Vector3, explosionRadius : float, upwardsModifier: float = 0.0F, mode :ForceMode = ForceMode.Force) : void 

       应用一个力到刚体来模拟爆炸效果。爆炸力将随着到刚体的距离线形衰减。

       explosionForce                             爆破力

       explosionPosition                        爆炸位置

       explosionRadius                           爆破半径,为0时表示无穷大

       upwardsModifier                         可以理解为爆炸产生的向上冲击波的衰减值。值越大,威力越小。

function ClosestPointOnBounds (position :Vector3) : Vector3

       计算刚体表面离position最近的点。可用于计算作用到刚体表面上一个点的爆炸力。

 

获取速度

function GetRelativePointVelocity(relativePoint : Vector3) : Vector3

       获取刚体上的点相对本地坐标系的速度。获取的速度有考虑刚体的角速度。

function GetPointVelocity (worldPoint :Vector3) : Vector3

       获取刚体上的点相对世界坐标系的速度。获取的速度有考虑刚体的角速度。

 

休眠

function Sleep () : void 

       强制一个刚体休眠至少一帧。刚体休眠有利于性能优化

function IsSleeping () : bool 

       判断刚体是否在休眠

function WakeUp () : void

       强制唤醒一个刚体

 

碰撞扫描

function SweepTest (direction : Vector3,out hitInfo : RaycastHit, distance : float = Mathf.Infinity) : bool 

       碰撞扫描,返回是否将要发生碰撞。

       direction                       扫描方向

       hitInfo                           如果将要发生碰撞(即返回true),hitInfo将包含更多碰撞信息

       distance                        扫描长度

function SweepTestAll (direction : Vector3,distance : float = Mathf.Infinity) : RaycastHit[] 

       碰撞扫描,返回所有碰撞点。

分享到:
评论

相关推荐

    Unity3D脚本:rigidbody解除休眠2

    然而,在某些情况下,为了优化性能,Unity3D可能会将不活动的刚体自动设置为“休眠”状态。本文将深入探讨如何通过脚本解除Rigidbody的休眠模式,以及休眠状态对刚体的影响。 首先,我们来理解什么是Rigidbody的...

    Unity教程:如何取消附加的刚体组件1

    在Unity游戏引擎中,刚体组件(Rigidbody)是一个核心元素,它负责处理物理模拟,使得游戏对象能够受到重力、碰撞和其他物理力的影响。在某些情况下,你可能需要取消附加到游戏对象上的刚体组件,例如当你不再需要...

    Unity3D入门 给刚体添加作用力让它运动起来

    在这个“Unity3D入门 给刚体添加作用力让它运动起来”的主题中,我们将深入探讨Unity3D中的刚体组件(Rigidbody)以及如何通过施加力来控制物体的动态行为。 1. 刚体组件:在Unity3D中,刚体是模拟物理效果的关键...

    Rigidbody:我自己在Unity(C#)中进行的刚体仿真

    - Rigidbody子系统是Unity 2019.3引入的新功能,用于优化物理模拟性能,特别是对于大量刚体的情况。 总之,Rigidbody组件在Unity中扮演着至关重要的角色,结合C#脚本,开发者可以创建出丰富多样的物理交互效果。...

    Unity3D之刚体

    在Unity3D中,"刚体"(Rigidbody)是物理模拟的核心组件之一,它使得游戏对象能够参与物理交互,如重力、碰撞检测和动态运动。以下是对Unity3D刚体及其相关知识点的详细解释: 一、刚体组件(Rigidbody Component)...

    Unity3D——魂斗罗素材.zip

    在这个实例中,我们将围绕“Unity3D——魂斗罗素材.zip”这个主题,探讨如何利用这些免费素材在Unity3D中构建一个类似魂斗罗的游戏。 首先,我们看到压缩包内包含了多种类型的文件,如图像、音频等,这些都是游戏...

    UNITY 刚体DEMO

    Unity是世界上最受欢迎的游戏开发引擎之一,它为开发者提供了丰富的功能,包括物理系统,其中的核心组件就是刚体(Rigidbody)。本教程将通过"UNITY 刚体DEMO"深入讲解Unity中刚体的运用,帮助你掌握如何在游戏场景...

    Unity开发中Rigidbody,Collider,PhysicMaterial的问题2

    在Unity游戏开发中,Rigidbody、Collider和PhysicMaterial是物理系统中的核心组件,它们各自承担着不同的职责,共同构建出真实感的物理交互环境。本文将深入探讨这三个组件的工作原理和应用场景,并给出一些实际操作...

    CaronteFX刚体Unity组件

    在Unity中,刚体(Rigidbody)是用于处理物体动态运动的核心组件,它允许开发者模拟真实世界的物理现象,如重力、碰撞和相互作用。而CaronteFX则将这些功能进一步扩展和优化,提供了更为复杂和精细的物理效果。 ...

    Unity3D绘制任意形状的刚体碰撞器

    "Unity3D绘制任意形状的刚体碰撞器"这一主题涉及到如何利用Unity的内置工具来实现动态、交互的3D环境。在这个场景中,我们将主要关注两个核心组件:LineRenderer和Rigidbody。 首先,LineRenderer是Unity3D中用于...

    Unity3D具体实例——打怪兽

    学习如何导入外部3D模型到Unity,并调整它们的碰撞器(Collider)和刚体(Rigidbody)组件,以实现物理交互。 3. **动画系统**:Unity的 Animator 和 Animation 组件用于管理角色和怪兽的动作,例如武士攻击、移动...

    unity刚体.docx

    Unity引擎中的刚体组件(Rigidbody)是实现物理模拟的核心元素,它使得游戏对象能够遵循牛顿力学定律,进行碰撞、旋转和移动。刚体的属性设置和行为控制对游戏物理表现至关重要。下面将详细探讨刚体的主要属性和功能...

    Unity3D跑酷类小游戏源码

    游戏对象是场景中的实体,它们可以附加各种组件,比如刚体(Rigidbody)用于物理模拟,或者动画器(Animator)来控制角色的动作。 在这个跑酷游戏中,源码可能包含以下几个关键部分: 1. **角色控制器**:这是游戏...

    unity刚体.pdf

    Unity中的刚体组件(Rigidbody)是实现物理模拟的核心组件,它使得游戏对象能够遵循物理定律,如重力、碰撞和力的作用。在游戏中,如果希望物体受到物理影响,如落下、移动或与其他物体碰撞,就需要为其添加刚体组件...

    Unity3D 三本圣典中文脚本

    以及Collider(碰撞器)和Rigidbody(刚体)用于物理模拟。 其次,“Unity圣典之中文脚本手册3.42”专注于C#脚本在Unity中的应用。Unity使用C#语言编写脚本,控制游戏逻辑、交互和行为。这个手册会涵盖C#基础,如...

    Unity3D中文api开发手册

    接着,手册会涉及Unity的组件系统,如Transform(变换)、Rigidbody(刚体)和Collider(碰撞器)。这些组件是实现游戏物理交互的基础,通过它们可以实现物体的移动、旋转、碰撞检测等效果。此外,手册还会涵盖动画...

    35个unity游戏项目实例源码(含运动类游戏).zip

    游戏对象是Unity的基础,它们可以是角色、道具、环境元素等,每个对象都有组件,如Transform(变换)用于位置、旋转和缩放,Mesh Renderer(网格渲染器)用于显示3D模型,以及各种脚本组件如Rigidbody(刚体)用于...

    Unity圣典_unity圣典_unity_Unity圣典_

    Unity的物理系统基于PhysX引擎,支持刚体、软体和粒子系统。通过调整刚体和碰撞器的属性,可以实现逼真的物理效果。同时,Unity的动画系统允许创建复杂的角色动画,包括蒙皮网格动画和骨骼动画,可以结合Mecanim进行...

    Unity3D从入门到精通PDF.rar

    此外,还会讲解如何编写游戏对象的组件脚本,如Transform(变换)、Rigidbody(刚体)和Collider(碰撞器),以及如何处理游戏事件。 在图形和动画部分,书中将涵盖材质、纹理、光照、阴影等基础知识,让开发者能够...

    unity3d 乒乓球demo,自己学习unity的时候制作的一个demo

    5. **游戏对象与组件**:Unity3D基于面向对象的设计,每个游戏元素(如球、球拍)都是一个GameObject,它们可以附加各种组件,如Transform(变换)、Mesh Renderer(网格渲染器)和上面提到的Rigidbody(刚体)等。...

Global site tag (gtag.js) - Google Analytics