2015-08-28 3 views
3

У меня есть препятствие, такое как палочка, которая в вертикальном положении. Это движение по вектору скорости в rigibody2d (-4,0). И у меня есть герой, который всегда остается в центре игрового экрана. Когда герой сталкивается с палкой, я хочу, чтобы это препятствие пролетел с некоторым вращением, в зависимости от точки столкновения (например, законы физики, если точка столкновения у краев, затем больше крутящего момента).Единство: AddTorque не работает

Но, AddTorque на rigibody2D не работает, хотя AddForce отлично работает.

Существует код столкновения

void OnCollisionEnter2D(Collision2D other) 
{ 
    if (other.collider.tag == "Block") 
    { 
     if (InvBonusEnabled) { 
      other.collider.isTrigger = true; 
      other.rigidbody.isKinematic = false; 
      other.rigidbody.AddTorque(100); //simple test doesn't work 
      other.rigidbody.AddForce(new Vector2(200, 50)); 
      // 
     } 
    } 
} 

Я не могу прикрепить экран с сборного rigibody2D и настройки collider2D (репутация 10 требующегося на этой StackOverflow)

Rigibody2D

Масса: 1

Линейное перемещение: 0

Угловая Drag: 0,05

Гравитация Масштаб: 1

IsKinematic: Правда

Все Замораживание ПОлОжЕНИЕ и вращения являются ложными

Collider2D

IsTrigger: ложные

Что я делаю неправильно?

ответ

0

GameObject.rigidbody и GameObject.rigidbody2D устарели. Попробуйте использовать вместо GetComponent<Rigidbody2D>():

void OnCollisionEnter2D(Collision2D other) 
{ 
    if (other.collider.tag == "Block") 
    { 
     if (InvBonusEnabled) { 
      other.collider.isTrigger = true; 
      Rigidbody2D rb = other.gameObject.GetComponent<Rigidbody2D>(); 
      rb.isKinematic = false; 
      rb.AddTorque(100); 
      rb.AddForce(new Vector2(200, 50)); 
     } 
    } 
} 
+0

Только: Rigidbody2D гь = other.gameObject.GetComponent (); Но она по-прежнему не работает –

2

Ваш крутящий момент может быть слишком низкой числа. Попробуйте подняться до тысячи или даже выше.

Try также растет в rigidbody.maxAngularVelocity Thats работал для меня, прежде чем

+0

Set 10000000, не wotk .. maxAngularVelocity не доступен для Rigidbody2D –

+0

вы 'kinematic' установлен в' true', то вы установите его в 'false' в коде? Почему бы не удержать его? – maksymiuk

+0

Потому что я хочу, чтобы препятствие двигалось только горизонтально перед столкновением –

Смежные вопросы