Rigidbody.linearVelocity
Declaration
public Vector3 linearVelocity;Описание
Вектор линейной скорости жесткого тела. Он представляет собой скорость изменения положения Rigidbody.
В большинстве случаев вам не следует изменять скорость напрямую, так как это может привести к нереалистичному поведению — используйте вместо этого AddForce Не устанавливайте линейную скорость объекта на каждом шаге физики, это приведет к нереалистичному моделированию физики. Типичным применением является изменение скорости при прыжке в шутере от первого лица, потому что вы хотите немедленно изменить скорость.
Примечание: linearVelocity является свойством пространства мира.
using UnityEngine; using UnityEngine.InputSystem;
// 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 = Keyboard.current.spaceKey.wasPressedThisFrame; }
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, определяющую направление. Кроме того, установка линейной скорости кинематического жесткого тела не разрешена и не будет иметь никакого эффекта.