подскажите пожалуйста,
У меня есть два объекта на сцене и точка куда они должны стремиться.
То поведение которое мне нужно работает так:
private void FixedUpdate(){
var delta = destination.position - tr.position;
rb.velocity = delta * Force;
}
При соприкосновении друг с другом они должны отталкиваться. Я сделал пока так:
private void OnCollisionEnter(Collision collision)
{
Vector2 direction = transform.position - collision.transform.position;
rb.AddForce(direction * 10, ForceMode.Impulse);
}
но ведет оно себя, естественно, не адекватно, как это лучше реализовать?
ты ему апдейтом ставишь велосити а при соприкосновении добавляешь форс предполагаю что результат твоего форса на следующем кадре просто анулируется
Нормализуй вектор delta
так да, в этом и проблема, нужно или в FixedUpdate переделать на AddForce как-то (я не понимаю как), или переделать OnCollisionEnter
мыслишь в правильном направлении тут либо одно либо другое
ну и документация юнити говорит следующее In most cases you should not modify the velocity directly, as this can result in unrealistic behaviour - use AddForce instead Do not set the velocity of an object every physics step.
Обсуждают сегодня