Rigidbody2D 的线速度表示 Rigidbody2D 位置随时间变化的速率,单位为世界单位。
线性速度指定为带有 X 和 Y 方向分量的 Vector2(2D 物理中没有 Z 方向)。通常不直接设置该值,而是通过使用力进行设置。
线性速度受用户指定的力、来自碰撞的冲量、重力和 Rigidbody2D.linearDamping 的影响。
注意:Unity 中的速度表示为世界单位每秒。世界单位是任意的,经常被认为是米,但它们也可以表示毫米或光年。
其他资源:Rigidbody2D.angularVelocity、Rigidbody2D.AddForce 和 Rigidbody2D.linearDamping。
using UnityEngine;
public class ExampleClass : MonoBehaviour { private Rigidbody2D rb;
private float time = 0.0f; private bool isMoving = false; private bool isJumpPressed = false; void Start() { rb = GetComponent<Rigidbody2D>(); }
void Update() { isJumpPressed = Input.GetButtonDown("Jump"); }
void FixedUpdate() { // Was jump pressed and we're not moving? if (isJumpPressed && !isMoving) { // The rigidbody moves up the y axis at a rate of 10 units per second rb.linearVelocity = new Vector2(0f, 10f);
isMoving = true;
Debug.Log("Moving!"); }
if (isMoving) { // When the rigidbody has moved for 10 seconds, report its position time = time + Time.fixedDeltaTime; if (time > 10f) { // Remove the linear velocity. rb.linearVelocity = Vector2.zero;
time = 0.0f; isMoving = false; Debug.Log(rb.position.y + " : " + time); } } } }