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=5030)

колобок 14.11.2007 23:33

снег
 
Здрасти всем.
С типами особо не разобрался,так вот у меня есть тип для создания снега(все ок),но проблема,я незнаю как бы сделать чтоб когда снег падал на землю появлялся в заданных координатах.э
вот код:

Код:


Type snow;тип для снега
Field der
End Type
...
For snow=1 To 600
obj.snow=New snow
obj\der=LoadSprite("snow.bmp")
PositionEntity obj\der,Rnd(-150,150),Rnd(70,140),Rnd(0,100)
Next


Pixel 15.11.2007 01:36

Re: снег
 
Цитата:

Const TOTALFLAKES=600

Global flake.flakes

; Sneginku
Type flakes
Field x#
Field y#
Field z#
Field spr
End Type
Цитата:

Function InitFlakes()

For x = 1 To TOTALFLAKES
flake.flakes = New flakes
flake\spr = LoadSprite("gfx\snowflake.png",4)
ScaleSprite flake\spr,0.3,0.3

flake\x#=Rnd(0,60)
flake\y#=Rnd(-1.5,1.5)
flake\z#=Rnd(0,60)
Next

End Function

;-----------------------------------------------------------------------

Function UpdateFlakes()

For flake.flakes = Each flakes


If flake\y#<-1.5 Then
flake\x#=Rnd(0,100)
flake\y#=9.5
flake\z#=Rnd(0,100)
End If

dir#=Rnd(-0.02,0.02)
flake\x#=flake\x#+dir+.005
flake\y#=flake\y#-0.02

PositionEntity flake\spr, flake\x#, flake\y#, flake\z#

Next
End Function
Перед главным циклом вызывай InitFlakes(), а в главном UpdateFlakes()
Можеш еще подрегулировать значения x,y,z ;)

Damp 15.11.2007 14:24

Re: снег
 
Не советовал бы только одновременно выводить 600 спрайтов.
Примерные требования - 100 для AMD2000, а для PII800 (типичная казула) 20-30, если не используешь прямой достум к памяти. Ну это так... личное мнение.

колобок 15.11.2007 21:28

Re: снег
 
о,спасибо огромное,внесу в список авторов =)


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

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