Показать сообщение отдельно
Старый 13.06.2007, 17:32   #1
CRACK
AnyKey`щик
 
Регистрация: 15.02.2007
Сообщений: 18
Написано 0 полезных сообщений
(для 0 пользователей)
Удаление частиц

Добрый день, в поиске почему-то я по конкретному вопросу не нашел... В общем пишу систему частиц(типа шлейф за чем-нибудь) для небольшой аркады. Смысл такой - рисуется пять спрайтов за один цикл на месте player'a, и так как он у меня с постоянной скоростью перемещается(что-то типа летящего самолетика подбитого), то этого в полне хватает визуально. Но проблема в другом - спрайты у меня вырисовываются через массив и я никак не могу избавиться от переполнения массива. Ну а если делать просто через нью тайп, то не получается удалять лишний хвост. А библиотеки левые прикручивать не хочу. Вот простой исходничек, посмотрите пожалуйста:

Dim particle(20000)
Graphics3D 1024,768,32,1

light=CreateLight()
TurnEntity light, 45,45,0
Player=CreateCube()
PositionEntity Player,0,5,15
cam=CreateCamera()
PositionEntity cam,14,0,-20
CameraRange cam,0.1,110000
plane=CreatePlane()
PositionEntity plane,0,-20,0
EntityColor plane,20,120,20
asp = LoadTexture("media/tex.jpg")
ScaleTexture asp, 50, 50
EntityTexture plane, asp

hvost = LoadSprite("media/lens.jpg")

Repeat

For b=1 To 5
i=i+1
particle(i) = CopyEntity(hvost,particle(i))
PositionEntity particle(i),EntityX(Player)+Rnd(-1,1),EntityY(Player)+Rnd(-0.5,0.5),EntityZ(Player)
If i>150 Then HideEntity particle(i-150)
Next
MoveEntity cam,1,0,0
MoveEntity player,0,-0.3,0
MoveEntity player,1,0,0
If KeyDown(200) Then MoveEntity player,0,0.4,0


If KeyDown(1) Then Exit

UpdateWorld
RenderWorld



Text 10,14,"Array "+i

Flip

Forever
(Offline)
 
Ответить с цитированием