Луч, выпущенный из объекта на высокой скорости

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

Луч, выпущенный из объекта на высокой скорости

Сообщение Dan1g3r 11 ноя 2010, 21:46

Здравствуйте! Не могли-бы вы подсказать, почему луч, выпущенный из объекта на высокой скорости, может не реагировать на препятствия?

К примеру: у меня есть объект, без файла столкновения, который движется, при помощи Translate, по оси Z, на скорости порядка 100-150 и выпускает на лету, беспрерывный короткий луч(порядка 1м.). К этому всему счастью еще привинчен счетчик, который высчитывает количество столкновений.
Проблема заключается в том, что счетчик чаще всего недосчитывает столкновений, или вообще показывает 0.
Не подскажете, как это исправить?)
Аватара пользователя
Dan1g3r
UNец
 
Сообщения: 35
Зарегистрирован: 18 май 2010, 23:50

Re: Луч, выпущенный из объекта на высокой скорости

Сообщение Pyx 11 ноя 2010, 22:04

Вы не допускаете,что расстояние в 1м предмет может пролететь как бы между фреймами? Или я не понял скорость 100-чего.
Pyx
 

Re: Луч, выпущенный из объекта на высокой скорости

Сообщение Dan1g3r 11 ноя 2010, 22:08

Скорость объекта из которого выпускается луч.
transform.Translate(direction * Time.deltaTime*speed, Space.World);
speed = 100;
Последний раз редактировалось Dan1g3r 11 ноя 2010, 22:10, всего редактировалось 1 раз.
Аватара пользователя
Dan1g3r
UNец
 
Сообщения: 35
Зарегистрирован: 18 май 2010, 23:50

Re: Луч, выпущенный из объекта на высокой скорости

Сообщение Zaicheg 11 ноя 2010, 22:08

Нео не одобряет, но попробуйте пускать лучи из Update, а не FixedUpdate
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Луч, выпущенный из объекта на высокой скорости

Сообщение Dan1g3r 11 ноя 2010, 22:16

Пробовал из обоих. При FixedUpdate, FPS прилично падает. Может я чего-то не понимаю?
Вот собственно код:

Код: Выделить всё
var hit : RaycastHit;
var bullet : GameObject;
var timeOut = 0.45;
var range =2.0;
var speed = 130;
var bullet_speed = 10;
var count = 0;

function Start()
{
   Invoke("Kill", timeOut);
}

function Update ()
{
      if(count>=3)Destroy(gameObject);
var direction = transform.TransformDirection(Vector3(0, 0, 1));
  transform.Translate(direction * Time.deltaTime*speed, Space.World);
   if (Physics.Raycast (transform.position, direction, hit, range))
   { Debug.DrawLine (transform.position, hit.point, Color.red);}
   if(hit.collider.tag=="bot")
        { count += 1;
var instantiatedBullet = Instantiate( bullet, transform.position, transform.rotation );               
instantiatedBullet.velocity = transform.TransformDirection( Vector3( 0, 0, bullet_speed ) );

      }
      }

function Kill ()
{
   Destroy(gameObject);
}

Делаю пулю, для винтовки, которая должна пробить несколько целей...
Аватара пользователя
Dan1g3r
UNец
 
Сообщения: 35
Зарегистрирован: 18 май 2010, 23:50

Re: Луч, выпущенный из объекта на высокой скорости

Сообщение Ert Donuell 11 ноя 2010, 23:34

А почему не убрать у пули коллайдер (если есть) и повесить триггер на столкновения?
Добавить dmitrii.baranov.yumasoft в Skype
Аватара пользователя
Ert Donuell
Старожил
 
Сообщения: 781
Зарегистрирован: 05 июл 2010, 09:50
Откуда: Санкт-Петербург
  • ICQ

Re: Луч, выпущенный из объекта на высокой скорости

Сообщение Dan1g3r 12 ноя 2010, 13:29

Спасибо за подсказку!) Все отлично сработало.
Код: Выделить всё
var timeOut = 0.45;
var speed = 130;
var count = 0;

function Start()
{
   Invoke("Kill", timeOut);
}

function Update ()
{
      if(count>=3)Destroy(gameObject);
var direction = transform.TransformDirection(Vector3(0, 0, 1));
  transform.Translate(direction * Time.deltaTime*speed, Space.World);
      }
      
function OnTriggerEnter (other : Collider) {
   if(other.gameObject.tag =="bot"||other.gameObject.tag =="target")
   {
      count += 1;
         other.gameObject.SendMessage ("ApplyDamage", 100);
   }
}

function Kill ()
{
   Destroy(gameObject);
}
Аватара пользователя
Dan1g3r
UNец
 
Сообщения: 35
Зарегистрирован: 18 май 2010, 23:50

Re: Луч, выпущенный из объекта на высокой скорости

Сообщение Paul Siberdt 12 ноя 2010, 17:28

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

Re: Луч, выпущенный из объекта на высокой скорости

Сообщение Dan1g3r 12 ноя 2010, 19:17

Каким образом?
Аватара пользователя
Dan1g3r
UNец
 
Сообщения: 35
Зарегистрирован: 18 май 2010, 23:50

Re: Луч, выпущенный из объекта на высокой скорости

Сообщение Paul Siberdt 13 ноя 2010, 05:59

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

Re: Луч, выпущенный из объекта на высокой скорости

Сообщение Dan1g3r 14 ноя 2010, 12:25

Это подошло-бы для обычной пули, а в моем случае, пуля прошивает насквозь несколько противников, а луч нужен был для считывания количества препятствий на пути, чтоб после, допустим, третьего - самоуничтожиться. Триггеры вполне подошли)
Аватара пользователя
Dan1g3r
UNец
 
Сообщения: 35
Зарегистрирован: 18 май 2010, 23:50

Re: Луч, выпущенный из объекта на высокой скорости

Сообщение Paul Siberdt 14 ноя 2010, 17:29

Что мешает пробить лучом три препятствия? Physics.RaycastAll фиксирует все коллизии на пути луча, отсортируйте нужные цели по первенству и значению их penetration.

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

Re: Луч, выпущенный из объекта на высокой скорости

Сообщение Dan1g3r 14 ноя 2010, 22:57

Спасибо, будем знать))
Аватара пользователя
Dan1g3r
UNец
 
Сообщения: 35
Зарегистрирован: 18 май 2010, 23:50

Re: Луч, выпущенный из объекта на высокой скорости

Сообщение Ert Donuell 16 ноя 2010, 20:49

Рад что моя идейка помогла)

Paul Siberdt писал(а):Проблема триггера - он не даст точку коллизии, это значит, что не получится нарисовать какой-нить эффект в этой точке при желании.

Можно фиксировать положение пули при коллизии, это ведь материальная точка) Но это может быть полезно лишь в подобных случаях)
Добавить dmitrii.baranov.yumasoft в Skype
Аватара пользователя
Ert Donuell
Старожил
 
Сообщения: 781
Зарегистрирован: 05 июл 2010, 09:50
Откуда: Санкт-Петербург
  • ICQ


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

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 3