Примерно все делается так
Type Bullet
Field Entity ;Сам ентити пули
Field LifeTime ;время жизни пули по истечении которого пулю удаляем
End Type
;=================
;Функция: CreateBullet
;Описание: Создает пулю
;Исходя из координат указанного
;Объекта ( Entity )
;=================
Function CreateBullet(Entity%)
b.Bullet = New Bullet
b\Entity = CreateSphere()
PositionEntity b\Entity,EntityX(Entity,True),EntityY(Entity,True),EntityZ(Entity,True)
RotateEntity b\Entity,EntityPitch(Entity,True),EntityYaw(Entity,True),EntityRoll(Entity,True)
End Function
;=================
;Функция: UpdateBullet()
;Описание: Обновляет все пули
;т.е их перемещения, время жизни и т.д
;=================
Function UpdateBullet()
For B.Bullet = Each Bullet
MoveEntity B\Entity,0,0,5 ;Пуля у нас летит в том направлении куды указали пистолетом( RotateEntity в CreateBullet )
B\LifeTime = B\LifeTime + 1
If B\LifeTime > 100
FreeEntity B\Entity
Delete B
End If
Next
End Function
А теперь контроль за выстрелами
Global TimeOfShoot% = 0
Function ControlOfShooting()
If MouseDown(1) Then
TimeOfShoot% = TimeOfShoot% + 1
If TimeOfShoot% > 10 Then
PlaySound( Звук_Выстрела )
CreateShot( Ентити_Пистолета )
TimeOfShoot% = 0
End If
End If
End Function
Если че не понял, объясню