нормально, местами отлично, но есть как всегда но. Делаю всё перемещение через AddReForce, казалось бы, правильно перемещаю физический объект как надо, но у этого всего есть лично для меня не приятное ускорение и торможение от которого бы хотелось избавиться и управлять этими параметрами самой. Иначе:
1) velocity - я бы с удовольствием бы работала через установку скорости, но есть опять нюанс, NVidia Physics отличается от Box2D и каждый вызов перезаписывает скорость по новой и получается так, что это просто напросто...бесполезно, когда в контроллере и прыжки и гравитация своя и так далее. Я пробовала объединять вектора, но все это даёт шизофрению на экране
2) MovePosition - если вы знаток в написании собственных детекторов коллизий, это не ко мне, на это надо тратить время
3) Менять в разных состояниях drag. Казалось бы - решение, но не так. Выглядит это коряво и не красиво.
По итогу я хочу сделать умное и элегантное решение, которое бы это дело исправляла, я пробовала при торможении прилагать обратную силу и не смогла это сделать работающим полностью, только на половину, почему-то не смогла сделать это с учётом направления движения
Есть те кто могут помочь? Может вы знаете как быть в первом варианте? Или вы знаете как правильно прилагать силу в противовес движения для правильного и настраемового торможения?
Жду знающих людей
float brakeForce = 5f; Rigidbody2D rb = GetComponent<Rigidbody2D>(); void Update() { float moveX = Input.GetAxis("Horizontal"); Vector2 force = Vector2.zero; if (moveX > 0) { force.x = moveX * rb.mass; вперед } else if (moveX < 0) { force.x = -moveX * rb.mass; } rb.AddForce(force); // Применяем тормозную силу if (moveX == 0 && rb.velocity.x != 0) { rb.AddForce(-Mathf.Sign(rb.velocity.x) * brakeForce); } } brakeforce - это сила торможения, которую ты можете настроить под свои нужды надеюсь я правильно понял что тебе нужно
Я это даже ясно объяснила в описании
Обсуждают сегодня