Страница 1 из 1

Равномерное движение ригидбади

СообщениеДобавлено: 24 ноя 2018, 03:41
Woolf
Собственно, как сделать равномерное движение в нужном направлении через физику? Ибо AddForce каждый fixed-тик придаёт ускорение.
И второй вопрос, есть ли какой-то аналог LookAt но для ригидбади?

Re: Равномерное движение ригидбади

СообщениеДобавлено: 24 ноя 2018, 10:34
Xtir
Для движения можно использовать rigidbody.velocity.

Re: Равномерное движение ригидбади

СообщениеДобавлено: 24 ноя 2018, 11:43
1max1
Собственно, как сделать равномерное движение в нужном направлении через физику?

Адекватное? Думаю никак, либо через костыли. Недавно пытался сделать через rb.MovePosition, думал будет реагировать на коллайдеры, ага, хрен там, реагирует также дергано как и transform.position = pos; Если найдешь способ обязательно напиши))
Возможно баг именно моей версии, хз...

п.с. Единственное что не дергается, так это rb.velocity, всё остальное до фени)

Re: Равномерное движение ригидбади

СообщениеДобавлено: 24 ноя 2018, 16:24
Anonymyx
И второй вопрос, есть ли какой-то аналог LookAt но для ригидбади?

Через MoveRotation:
Синтаксис:
Используется csharp
rb.MoveRotation(Quaternion.LookRotation(target.position - transform.position)); //Или тот же LookAt();
 


Через AddTorque:
Синтаксис:
Используется csharp
 rb.AddTorque(Vector3.Cross(transform.forward, (target.position - transform.position)) * Time.deltaTime);
 


rb.MovePosition

Это используется для кинематических объектов. Как и MoveRotation.

Re: Равномерное движение ригидбади

СообщениеДобавлено: 24 ноя 2018, 18:11
Woolf
1max1 писал(а):
Собственно, как сделать равномерное движение в нужном направлении через физику?

Адекватное? Думаю никак, либо через костыли. Недавно пытался сделать через rb.MovePosition, думал будет реагировать на коллайдеры, ага, хрен там, реагирует также дергано как и transform.position = pos; Если найдешь способ обязательно напиши))
Возможно баг именно моей версии, хз...

п.с. Единственное что не дергается, так это rb.velocity, всё остальное до фени)


А вот нашел канонически правильное изменение скорости. Не очевидно, прямо скажем

Синтаксис:
Используется csharp
var velocityChange = desiredVelocity - _rigidbody.velocity;
_rigidbody.AddForce (velocityChange, ForceMode.VelocityChange);

Re: Равномерное движение ригидбади

СообщениеДобавлено: 24 ноя 2018, 19:14
waruiyume
Что не очевидно?

Re: Равномерное движение ригидбади

СообщениеДобавлено: 24 ноя 2018, 20:22
Woolf
waruiyume писал(а):Что не очевидно?


Не очевидно, что так можно делать ) Но работает.
PS Эта физика рыболовных приманок заставляет сходить с ума )) Столько сил на них действует в воде, а на воздухе совсем другие силы..