Как определить силу которая воздействует на Rigidbody
Добавлено: 22 июн 2012, 12:05
По идее все должно быть легко и просто "Сила = Масса * Ускорение". То есть, по идее чтобы нам мгновенно остановить движущееся Rigigdbody достаточно этого:
Да вот только Rigidbody продолжает двигаться. И чтобы уже полностью остановить Rigidbody на которое действует допустим только сила гравитации. Надо добавить еще и:
Как я понял Rigidbody в текущем физическом шаге не до конца рассчитывает ускорение на основе всех приложенных к нему сил. Или я чегото не понимаю?
Вопрос в том, как мне рассчитать правильное ускорение с учетом всех действующих сил на основе ускорение ( или чего нибудь другого) если мы наверняка не знаем какие силы действуют на него, чтобы можно было написать допустим вот так:
И Rigidbody остановилось бы полностью.
Синтаксис:
Используется csharp
public bool unlockForce = false;
void FixedUpdate(){
if(unlockForce)
rigidbody.AddForce( -rigidbody.velocity*rigidbody.mass, ForceMode.Impulse);
}
void FixedUpdate(){
if(unlockForce)
rigidbody.AddForce( -rigidbody.velocity*rigidbody.mass, ForceMode.Impulse);
}
Да вот только Rigidbody продолжает двигаться. И чтобы уже полностью остановить Rigidbody на которое действует допустим только сила гравитации. Надо добавить еще и:
Синтаксис:
Используется csharp
public bool unlockForce = false;
void FixedUpdate(){
if(unlockForce)
rigidbody.AddForce( 0, 9.81f, 0 , ForceMode.Force);
}
void FixedUpdate(){
if(unlockForce)
rigidbody.AddForce( 0, 9.81f, 0 , ForceMode.Force);
}
Как я понял Rigidbody в текущем физическом шаге не до конца рассчитывает ускорение на основе всех приложенных к нему сил. Или я чегото не понимаю?
Вопрос в том, как мне рассчитать правильное ускорение с учетом всех действующих сил на основе ускорение ( или чего нибудь другого) если мы наверняка не знаем какие силы действуют на него, чтобы можно было написать допустим вот так:
Синтаксис:
Используется csharp
public bool unlockForce = false;
void FixedUpdate(){
if(unlockForce)
rigidbody.AddForce( -trueVelocity*rigidbody.mass, ForceMode.Impulse);
}
void FixedUpdate(){
if(unlockForce)
rigidbody.AddForce( -trueVelocity*rigidbody.mass, ForceMode.Impulse);
}
И Rigidbody остановилось бы полностью.