Скорость в Unity 2D Как получить скорость объекта без твердого тела

Используя метод transform.translate(Vector3.left * 5f * Time.Deltatime;, это изменяет скорость игрового объекта с твердым телом, потому что в моем случае это не работает. Есть ли способ переместить объект, чтобы скорость изменилась. Если нет, есть ли способ измерить скорость объекта? без прикрепления Rigidbody к нему. Спасибо.


person Aleks19    schedule 30.09.2018    source источник
comment
translate позволяет объекту перейти в эту позицию, но компонент RigidBody сохраняет свою текущую скорость. Однако вы можете получить скорость, например. здесь, а затем примените его к RigidBody.velocity   -  person derHugo    schedule 02.10.2018


Ответы (2)


Вы можете измерить вектор скорости следующим образом:

Vector3 pos, velocity;

void Awake()
{
    pos = transform.position;
}

void Update()
{
    velocity = (transform.position - pos) / Time.deltaTime;
    pos = transform.position;
}
person Bizhan    schedule 30.09.2018
comment
Просто добавив, что это дает вам фактически вектор скорости. Если вам нужна реальная скорость, вы можете использовать velocity.magnitude - person derHugo; 02.10.2018

Вы можете использовать Transform.hasChanged.

if (!this.transform.hasChanged)
{
    print("Player is not moving");
}
transform.hasChanged = false;
person amitklein    schedule 15.09.2020