Как контролировать высоту объекта при коллизии?

Программирование на Юнити.

Как контролировать высоту объекта при коллизии?

Сообщение magic3d 05 авг 2010, 16:14

Всем привет!
У меня проблемка: как бы я не контролировал высоту объекта (transform.position.y = 1.0), всеравно при коллиззии со стенкой высота бывает различной. При отрицательном значении - проходит стенку... Что может быть? Сеньки...

Код: Выделить всё

function OnCollisionEnter (collision : Collision) {      
   if (collision.collider.tag == "Wall") {
      contact = collision.contacts[0];      
   }
}   

////////////////////////////////////////////////
function FixedUpdate () {
   if (START_MOVE) {
   
      transform.position.y = 1.0;
      
      if (cur_dist > 0) {
         transform.position = Vector3.Lerp(transform.position, final_Point, Time.deltaTime * curSpeed);      
         transform.position.y = 1.0;         
      }
      else {
         START_MOVE = false;   
      }
   }
}

////////////////////////////////////////////////
function Update () {
   transform.position.y = 1.0;                  
}         
Аватара пользователя
magic3d
UNIт
 
Сообщения: 75
Зарегистрирован: 16 апр 2009, 11:43
Откуда: Днепр
  • Сайт

Re: Как контролировать высоту объекта при коллизии?

Сообщение Paul Siberdt 05 авг 2010, 16:18

Хорошо бы описать не фрагмент проблемы, а то, что и для чего вы хотите получить. Тогда наверняка найдутся альтернативные решения.

Я вот даже не знаю, каким коллайдером вы ловите пересечение со стенкой, допускаю, конечно, что капсулой :)
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Как контролировать высоту объекта при коллизии?

Сообщение magic3d 05 авг 2010, 16:49

Ок.
Стенка - это стена игрового поля, а объект - это типа, шайба (Rigidbody и MeshColider).... Вообще, как это я везде устанавливаю Y=1, а когда срабатывает OnCollisionEnter(), то выходит непонятная высота...
Аватара пользователя
magic3d
UNIт
 
Сообщения: 75
Зарегистрирован: 16 апр 2009, 11:43
Откуда: Днепр
  • Сайт

Re: Как контролировать высоту объекта при коллизии?

Сообщение Paul Siberdt 05 авг 2010, 16:54

А если сделать коллайдером шайбы сферу и запретить ей вращение (есть такая галочка), думаю сфера коллизиться со стенкой будет всегда на высоте своего радиуса...
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Как контролировать высоту объекта при коллизии?

Сообщение magic3d 05 авг 2010, 17:22

Так у меня вращение freezied было с начала.
Восемь случаев OnCollisionEnter показывает отражение влево (-1, 0, 0), а два - вниз (0, -1, 0), и шайба проходит стену..
Попробую сферу вместо MeshCollidera, мож получиться..
Аватара пользователя
magic3d
UNIт
 
Сообщения: 75
Зарегистрирован: 16 апр 2009, 11:43
Откуда: Днепр
  • Сайт

Re: Как контролировать высоту объекта при коллизии?

Сообщение Serge 05 авг 2010, 17:51

Весь код из FixedUpdate нужно перенести в Update? Иначе он будет не корректно обрабатываться! Так же в FixedUpdate нельзя использовать Time.deltaTime. :-w
http://unity3d.com/support/documentation/ScriptReference/MonoBehaviour.FixedUpdate.html
http://unity3d.com/support/documentation/ScriptReference/MonoBehaviour.Update.html
О, сколько нам открытий чудных Готовят просвещенья дух И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель.
Аватара пользователя
Serge
UNIверсал
 
Сообщения: 476
Зарегистрирован: 20 мар 2009, 15:53
Откуда: Сибирь г. Омск
  • Сайт
  • ICQ

Re: Как контролировать высоту объекта при коллизии?

Сообщение magic3d 05 авг 2010, 19:05

Пасиба всем за советы. Это я уже сам пошел на извращения :)
А проблему решил - просто когда стенка вогнутая вдаль от объекта и вешаешь MeshCollider, то движок понимает это по своему - как-будто выходишь наружу из коллидера. А все исправил - просто поверхность заменил на кучу BoxCollider's.
Аватара пользователя
magic3d
UNIт
 
Сообщения: 75
Зарегистрирован: 16 апр 2009, 11:43
Откуда: Днепр
  • Сайт


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9