企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## **Rigidbody2D 二维刚体** Namespace: UnityEngine / Inherits from: Component ### Description 描述 用于2D精灵的刚体物理组件。 Rigidbody2D类本质上提供了与3D刚体同样功能。添加Rigidbody2D组件到一个精灵上置于物理引擎的控制下。就其本身而言,这意味着精灵会受到重力的影响并可以从脚本使用力控制。通过添加合适的碰撞器组件,该精灵也会响应与其他精灵碰撞。这种行为完全来自Unity的物理系统;非常少的代码得到令人印象深刻和真实的物理行为,并允许游戏中未明确编码的“突发”的运动。 其他参考: Rigidbody class, SpriteRenderer class, Collider2D class, Joint2D class. ## **Variables 变量** **angularDrag** 角阻力系数。 **angularVelocity** 每秒度的角速度。 **attachedColliderCount (新)** 返回附加到该Bigidbody2D的Collider2D的数量。 **bodyType(新)** Bigidbody2D的物理行为类型。 **centerOfMass** 刚体局部空间坐标的质量中心。 **collisionDetectionMode** 这个方法用于检测物理引擎两个对象是否已经碰撞。 **constraints** 控制允许该Rigidbody2D模拟的自由度。 **drag** 阻力系数 。 **freezeRotation** 控制该对象的物理是否更改旋转。 **gravityScale** 该对象将受重力影响。 **inertia** 该刚体旋转的惯性。 **interpolation** 用于更新期间的物理插值。 **isKinematic** 这个刚体不采用物理控制么? **mass** 该刚体的质量。 **position** 该刚体的位置。 **rotation** 该刚体的旋转角度。 **simulated** 标识该刚体是否应该物理模拟或不使用物理系统。 **sleepMode** 该休眠状态就是该刚体将初始化状态。 **useAutoMass** 该刚体的总质量是否从Collider2D.density自动计算。 **velocity** 该刚体的线性速度。 **useFullkinematicContacts(新)** 是否允许运动/运动和运动/静态碰撞? **worldCenterOfMass** 在世界坐标空间获取该刚体的质量中心。 ## **Functions 函数** **AddForce** 应用一个力到刚体。 **AddForceAtPosition ** 在给定位置添加力。 **AddRelativeForce** 添加一个力到二维刚体,相对于它的坐标系统。 **AddTorque** 在该刚体的质心应用一个力矩。 **GetPoint** Get a local space point given the point point in rigidBody global space. 在刚体世界坐标空间(全局空间)给定的点,获得局部坐标空间的点。 **GetPointVelocity** 点/Point/ (全局空间)处刚体的速度。 **GetRelativePoint** 在刚体局部空间给定点relativePoint,获得一个全局空间的点。 **GetRelativePointVelocity** The velocity of the rigidbody at the point Point in local space. 在局部空间刚体在point点的速度。 **GetRelativeVector** 在刚体局部坐标空间获得给定向量relativeVector的全局坐标空间向量。 **GetVector** 在刚体全局空间给定的的vector向量的获得局部空间向量。 **IsAwake** Sleeping是用来优化当一个对象在静止时暂时删除物理模拟。这个函数告诉当前刚体是否苏醒。 **IsSleeping** 该刚体是否休眠? **IsTouching** 检测附加到该刚体的任意碰撞器是否与collider接触。 **IsTouchingLayers** 检测附加到该刚体的任意碰撞器是否与指定层的碰撞器接触。 **MovePosition** 移动刚体到position。 **MoveRotation** 旋转该刚体到“angle”。 **Sleep** 使刚体休眠。 **WakeUp** 禁用一个刚体的休眠状态。 ``` using UnityEngine; /// <summary> /// /// </summary> public class AddForce2 : MonoBehaviour { public float x_power=0.0f; public float y_power = 100.0f; public Rigidbody2D rb2d; private void Start() { rb2d=GetComponent<Rigidbody2D>(); } void FixedUpdate() { if (Input.GetMouseButton(0)) { Vector2 x_force = new Vector2(x_power,y_power); rb2d.AddForce(x_force); } } } ``` 由于AddForce只接受向量而不像3d的可以接受x y z 三个参数,所以我们改造下