forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Проблема с MoveEntity (http://forum.boolean.name/showthread.php?t=3957)

BlackDragon 20.07.2007 02:25

Проблема с 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 ,скачек пропорционально меньше.

alcoSHoLiK 20.07.2007 02:40

Re: Проблема с MoveEntity
 
Сложно сказать. Покажи код вызова Bullets, создания пули. Или покажи весь код, чтобы можно было отладить.

impersonalis 20.07.2007 02:57

Re: Проблема с MoveEntity
 
Возможно, снаряд коллизится с корпусом танка, но так как к нему прикладывается команда MOVE, он "стекает" по броне и продолжает движение по новой, изменённой, траектории.
Перед установкой типа коллизии и команд MOVE, позиционируй снаряд чуть дальше конца "ствола" башни. (см. мой тутор по FPS)

moka 20.07.2007 13:28

Re: Проблема с MoveEntity
 
Хм, одна догадка есть, но не вижу комманд поворота. В них есть один прикол: Если крутить объект по Pitch и Yaw, коммандой RotateEntity, а Roll всегда ставить 0, то если Pitch меньше 0, и Roll 0, при комманде TurnEntity, будут неприятные дёрги, и объект не сможет наклониться по Pitch ниже 0, а Yaw будет крутиться на 180 градусов, туда-обратно.
Встречался с этим частенько.

Damp 20.07.2007 15:12

Re: Проблема с MoveEntity
 
С глюками по Pitch тоже знаком...
Но наверно всетаки коллизия обочто-то.

BlackDragon 20.07.2007 16:24

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

moka 20.07.2007 16:40

Re: Проблема с MoveEntity
 
Дело в коллизии, т.к. ты не двигаешь пулю, и уже задаёшь коллизию, вот она и коллизиться с танком.
Да и лучше так:
Код:

Tbullet\obj=CreateSphere(4)
PositionEntity Tbullet\obj,entityx(p1tank1piv3,1),entityy(p1tank1piv3,1),entityz(p1tank1piv3,1)
Rotateentity Tbullet\obj,entitypitch(p1tank1piv3,1),entityyaw(p1tank1piv3,1),,entityroll(p1tank1piv3,1)


impersonalis 20.07.2007 17:35

Re: Проблема с MoveEntity
 
Цитата:

Дело в коллизии, т.к. ты не двигаешь пулю, и уже задаёшь коллизию, вот она и коллизиться с танком.
про что я и говорил :imp:

BlackDragon 20.07.2007 18:54

Re: Проблема с MoveEntity
 
Всем большое спасибо за помощь. Теперь все работает как надо.Коллизия происходила не с телом танка, а с некоторыми деталями его обвеса, про которые я забыл.

moka 20.07.2007 18:57

Re: Проблема с MoveEntity
 
PS
Кнопочки у каждого сообщения, внизу-справа есть "Thank", многие любят когда им в качестве такой кнопки благодарят ;)


Часовой пояс GMT +4, время: 16:55.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot