Может кто-нибудь сказать мне разницу между AddForce и transform.translate? - PullRequest
1 голос
/ 13 марта 2019

Я пытаюсь переместить объект игры, но я нашел эти две самые популярные функции для перемещения объекта. Разница, которую я знаю между этими двумя, заключается в том, что для использования AddForce требуется жесткий элемент, но в Transform.translate не требуется Rigidbody. Я просто хотел убедиться, что я использую правильную функцию для игры. Есть ли какая-то разница в функциональности этих двух функций? Я перемещаю куб по бесконечной плоскости с препятствиями на пути. Я думаю, что нужно твердое тело, но я хочу знать, в чем польза Transform.translate?

Ответы [ 2 ]

3 голосов
/ 13 марта 2019

transform.translate:

С помощью этого метода вы в основном телетранспортируете GameObject, не принимая во внимание физику и коллайдеры.Это довольно дорого, если у вас есть RigidBody.

AddForce:

С этим вы добавляете силу к RigidBody объекта GameObject, поэтому все движениябудет учитывать физику и коллайдеры.

Если вам нужно переместить RigidBody (как игрок), я рекомендую использовать MovePosition .Он более точен, чем AddForce, и использует физический двигатель.

РЕДАКТИРОВАТЬ:

Пример:

public float movementSpeed= 5f; //for instance

void FixedUpdate()
{

    Vector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0 , Input.GetAxisRaw("Vertical"));
    rigidbody.MovePosition(transform.position + direction * movementSpeed * Time.fixedDeltaTime);
}

Настроить движение Ускорение, чтобы двигаться быстрее или медленнее.

Не тестировал код, но он должен работать.

1 голос
/ 13 марта 2019

Иногда вы не хотите использовать физику в своей игре, потому что она использует много вычислительной мощности, а также есть много других случаев, когда разработчику не нужно использовать физику для перемещения объекта или столкновения сдругие объекты не важны.

...