![]() |
Проблема с MoveEntity
Вложений: 2
Сегодня отловил в своей проге странный баг: танк стреляет мешем,
при некоторых углах поворота башни танка в горизонтальной плоскости, меш странно изменяет траекторию полета. После рождения меша в недрах башни, командой EntityParent он обретает независимость от нее и далее летит по прямой (до этого дня я был уверен что по прямой). Функция движения: Function BULLETS() For Tbullet.bullets =Each bullets If Tbullet <>Null If EntityCollided (Tbullet\obj,WALL) Or EntityCollided (Tbullet\obj,SCENE) ex1#=EntityX#(Tbullet\obj);,True) ey1#=EntityY#(Tbullet\obj);,True) ez1#=EntityZ#(Tbullet\obj);,True) InitionEXPL_1(ex1#,ey1#,ez1#,CollisionNX#(Tbullet\ obj,1), СоllisionNY#(Tbullet\obj,1),CollisionNZ#(Tbullet\o bj,1)) Tbullet\bullet_time=65 EndIf If Tbullet\bullet_time>60 FreeEntity Tbullet\obj Delete Tbullet Else MoveEntity Tbullet\obj,0,0,20 <====== Tbullet\bullet_time=Tbullet\bullet_time+1 EndIf EndIf Next End Function Примерный вид траектории представлен ниже. Закрашенная область - место изменения траектории (я думаю траект. изменяется скачкообразно). Интересно, что при изменении значения помеченного стрелочкой (см. выше) до 10, 5 , 2 ,скачек пропорционально меньше. |
Re: Проблема с MoveEntity
Сложно сказать. Покажи код вызова Bullets, создания пули. Или покажи весь код, чтобы можно было отладить.
|
Re: Проблема с MoveEntity
Возможно, снаряд коллизится с корпусом танка, но так как к нему прикладывается команда MOVE, он "стекает" по броне и продолжает движение по новой, изменённой, траектории.
Перед установкой типа коллизии и команд MOVE, позиционируй снаряд чуть дальше конца "ствола" башни. (см. мой тутор по FPS) |
Re: Проблема с MoveEntity
Хм, одна догадка есть, но не вижу комманд поворота. В них есть один прикол: Если крутить объект по Pitch и Yaw, коммандой RotateEntity, а Roll всегда ставить 0, то если Pitch меньше 0, и Roll 0, при комманде TurnEntity, будут неприятные дёрги, и объект не сможет наклониться по Pitch ниже 0, а Yaw будет крутиться на 180 градусов, туда-обратно.
Встречался с этим частенько. |
Re: Проблема с MoveEntity
С глюками по Pitch тоже знаком...
Но наверно всетаки коллизия обочто-то. |
Re: Проблема с MoveEntity
Про проблемы с RotateEntity не знал,надо посмотреть.Дело тут наверное не в коллизиях так как изменение траектории происходит несколько дальше от тела танка.Создание снаряда:
If p1t1fire=1 And p1t1fire1_t=0 p1t1fire1_t=1 Tbullet.bullets=New bullets Tbullet\obj=CreateSphere(4,p1tank1piv3) EntityParent Tbullet\obj,0 EntityType Tbullet\obj,BULLET EntityRadius Tbullet\obj,1 Tbullet\bullet_time=1 |
Re: Проблема с MoveEntity
Дело в коллизии, т.к. ты не двигаешь пулю, и уже задаёшь коллизию, вот она и коллизиться с танком.
Да и лучше так: Код:
Tbullet\obj=CreateSphere(4) |
Re: Проблема с MoveEntity
Цитата:
|
Re: Проблема с MoveEntity
Всем большое спасибо за помощь. Теперь все работает как надо.Коллизия происходила не с телом танка, а с некоторыми деталями его обвеса, про которые я забыл.
|
Re: Проблема с MoveEntity
PS
Кнопочки у каждого сообщения, внизу-справа есть "Thank", многие любят когда им в качестве такой кнопки благодарят ;) |
Часовой пояс GMT +4, время: 16:55. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot