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

Rigidbody.linearVelocity

建议更改

成功!

感谢您帮助我们改进 Unity 文档的质量。虽然我们不能接受所有提交内容,但我们会阅读用户提出的每个建议更改,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们改进 Unity 文档的质量。

关闭

取消

切换到手册
public Vector3 linearVelocity;

描述

刚体的线性速度向量。它表示刚体位置的变化率。

在大多数情况下,您不应该直接修改速度,因为这会导致不切实际的行为 - 请使用 AddForce 代替。不要在每个物理步骤中设置物体的线性速度,这会导致不切实际的物理模拟。典型的用法是在第一人称射击游戏中跳跃时更改速度,因为您希望速度立即发生变化。

注意:linearVelocity 是一个世界空间属性。

using UnityEngine;
using System.Collections;

// The velocity along the y axis is 10 units per second. If the GameObject starts at (0,0,0) then // it will reach (0,100,0) units after 10 seconds.

public class ExampleClass : MonoBehaviour { public Rigidbody rb;

private float time = 0.0f; private bool isMoving = false; private bool isJumpPressed = false;

void Start() { rb = GetComponent<Rigidbody>(); }

void Update() { isJumpPressed = Input.GetButtonDown("Jump"); }

void FixedUpdate() { if (isJumpPressed) { // the cube moves up the y axis at a rate of 10 units per second rb.linearVelocity = new Vector3(0, 10, 0); isMoving = true; Debug.Log("jump"); }

if (isMoving) { // when the cube has moved for 10 seconds, report its position time = time + Time.fixedDeltaTime; if (time > 10.0f) { Debug.Log(gameObject.transform.position.y + " : " + time); time = 0.0f; } } } }

注意:Unity 中的速度是每秒的单位。这些单位通常被认为是米,但也可以是毫米或光年。Unity 速度还包含 X、Y 和 Z 方向上的速度,定义了方向。此外,不允许设置运动学刚体的线性速度,这将不起作用。