Показать сообщение отдельно
Старый 01.11.2009, 09:55   #4
Ganociy
Разработчик
 
Аватар для Ganociy
 
Регистрация: 02.06.2009
Адрес: Город Герой Ленинград
Сообщений: 392
Написано 33 полезных сообщений
(для 74 пользователей)
Ответ: Эфект от выстрела

Terminator , я пошёл хитрым путём. Хочу тебя спросить , а у тебя есть функция пули??? Так вот я спрайт пули просто заменил на спрайт декали.))
Добавил такие параметры EntityRadius( в даном случае он = 0.009), коллизию поставил так: Collisions typeshot,typelevel,2,1 . Ну вот как-то так.

А теперь долгожданный код:



Global vs#=45; скорость нашей пули
Global shot=LoadSprite ("data/Sprites/bullet_hole.bmp"); пуля как дырка
HideEntity shot

Type shot
Field entity
Field dist#
End Type

;Это код самой пули
Function create_Shot(x#,y#,z#,pitch#,yaw#,roll#)
s.shot=New shot
s\entity=CopyEntity(shot)
PositionEntity s\entity,x#,y#,z#,1
EntityType s\entity,typeshot
RotateEntity s\entity,pitch#,yaw#,roll#,1
ScaleSprite s\entity,0.04,0.04
EntityRadius s\entity,0.006
RotateSprite s\entity,Rnd(360)
SpriteViewMode s\entity,2
Return True
End Function

Function update_shot()

max_dist#=3000

For a.shot=Each shot

MoveEntity a\entity,Rnd(0.2,0.3),0,vs#

a\dist#=a\dist#+vs#

bot_h = EntityCollided(a\entity,typelevel)<>0

If a\dist#>max_dist#
FreeEntity a\entity
Delete a

Exit
EndIf
Next
End Function

;ну и после репит
if mousedown(1)
create_shot(EntityX(player)-0.5,EntityY(player)+0.7,EntityZ(player),EntityPitc h(player)-2,EntityYaw(player),0)
endif

;До рендерворлд
update_shot()

Вот и всё . А сколько я времени убил что бы этого добиться!!! Ну всё же и это меня не устраивает! Буду думать , работать.
__________________
Самый первый и самый великий программист - это Бог.
(Offline)
 
Ответить с цитированием