forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Проблемы со стрельбой (http://forum.boolean.name/showthread.php?t=7932)

Nuprahtor 06.03.2009 11:44

Проблемы со стрельбой
 
Здравствуйте
Уже долгое я не могу решить одну проблему, связанную со стрельбой...
Сейчас я постараюсь объяснить суть этой проблемы подробнее.
Значит, вид игры - от первого лица. При нажатии на ЛКМ создается обьект-снаряд.

Код:

Function createshot()
Local pitch# = EntityPitch(camera,1),yaw# = EntityYaw(camera,1),roll# = EntityRoll(camera,1)
        bul.bullet = New Bullet
                bul\model = CopyEntity(bula)
                bul\life = 10
                bul\speed = 5
                EntityType bul\model,COL_BULLET
                EntityParent (bul\model,worldplane)
                EntityRadius bul\model,1
                For pc.player = Each player
        PositionEntity bul\model,EntityX(camera,1),EntityY(camera,1),EntityZ(camera,1)
        TurnEntity (bul\model,pitch#,yaw#,roll#)
        Next
End Function

Вот здесь его поведение:

Код:

Function battleFrame()
        For bul.bullet = Each bullet
       
        If bul <> Null
                MoveEntity bul\model,0,0,bul\speed
               
                If bul <> Null
                If EntityCollided (bul\model,COL_LEVEL)
                        FreeEntity bul\model
                        Delete bul
                EndIf
                EndIf
               
                If bul <> Null
                en_dam = EntityCollided(bul\model,COL_ENEMY)
       
                EndIf
               
                If en_dam<>0 And bul <> Null
               
                        FreeEntity bul\model
                        Delete bul
                       
                ;        If ed_dam <> 0
                        bhandle=EntityName(en_dam)
                        en.enemy=Object.enemy(bhandle)
                        en\hp = en\hp - 1
                ;        EndIf
               
                        EndIf
                       
               
                EndIf
               
        Next
End Function

Когда на арене нет врагов, снаряды летят и коллизятся нормально. Но при создании объектов-врагов, снаряд (вне зависимости от того, куда повернулась камера игрока) появляется на доли секунды прямо рядом с врагом, снимает ему хиты и уничтожается.
То есть, при живом враге на локации целиться не обязательно - кликай на мышку, и враг сам помрет...
Что не так, может кто-нибудь помочь?

ABTOMAT 06.03.2009 16:06

Ответ: Проблемы со стрельбой
 
Враги описаны общим с игроком типом?

Nuprahtor 06.03.2009 16:29

Ответ: Проблемы со стрельбой
 
Цитата:

Сообщение от ABTOMAT (Сообщение 99753)
Враги описаны общим с игроком типом?

Нет.
Еще заметил, что при активном беге по арене и стрельбе, выстрелы иногда все-же летят по нужному направлению, но чаще они появляются прямо на месте врагов...

impersonalis 06.03.2009 16:36

Ответ: Проблемы со стрельбой
 
Цитата:

EntityType bul\model,COL_BULLET
и
Цитата:

PositionEntity bul\model,EntityX(camera,1),EntityY(camera,1),Enti tyZ(camera,1)
поменяй порядок следования
И вообще: http://forum.boolean.name/showthread.php?t=15 тут всё это есть

impersonalis 06.03.2009 16:38

Ответ: Проблемы со стрельбой
 
Боты, я так понимаю, у тя в нуле создаютцо?

Nuprahtor 06.03.2009 17:57

Ответ: Проблемы со стрельбой
 
Благодарю Вас!
Цитата:

Сообщение от impersonalis (Сообщение 99765)
Боты, я так понимаю, у тя в нуле создаютцо?

Эээ, это как, не понимаю...

Raion 06.03.2009 18:32

Ответ: Проблемы со стрельбой
 
Немного подправить нужно.;)

Function createshot(Parent)

bul.bullet = New Bullet
bul\model = CopyEntity(bula)
bul\life = 10
bul\speed = 5

EntityParent (bul\model,Parent)
EntityRadius bul\model,1

PositionEntity bul\model,0,0,0
rotateEntity (bul\model,0,0,0)
EntityType bul\model,COL_BULLET
End Function

if mousehit(1) then createshot(camera)


Вот так попробуй:super:

Nuprahtor 06.03.2009 18:55

Ответ: Проблемы со стрельбой
 
impersonalis уже мне помог. А функцию CreateShot() я использую только для одного - для стрельбы игрока, поэтому родительскую привязку не использую, в самой функции все координаты прописаны.
Подумать только, из за неправильного расположения команд я начал писать новый каркасс, бросив старый, над которым работал около шести месяцев...


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

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