版本:Unity 6 (6000.0)
语言中文
  • C#

Rigidbody2D.linearVelocity

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。尽管我们无法接受所有提交,但我们确实会阅读用户提出的每项建议更改,并在适用的情况下进行更新。

关闭

提交失败

由于某种原因,您建议的更改无法提交。请在几分钟后<a>重试</a>。感谢您花时间帮助我们提高 Unity 文档的质量。

关闭

取消

公共 Vector2 linearVelocity;

说明

Rigidbody2D 的线速度表示 Rigidbody2D 位置随时间变化的速率,单位为世界单位。

线性速度指定为带有 X 和 Y 方向分量的 Vector2(2D 物理中没有 Z 方向)。通常不直接设置该值,而是通过使用进行设置。

线性速度受用户指定的力、来自碰撞的冲量、重力和 Rigidbody2D.linearDamping 的影响。

注意:Unity 中的速度表示为世界单位每秒。世界单位是任意的,经常被认为是米,但它们也可以表示毫米或光年。

其他资源:Rigidbody2D.angularVelocityRigidbody2D.AddForceRigidbody2D.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); } } } }