Fluidize -vesitehoste
Author: Ruuttu
Added: 9. huhtikuuta 2011 kello 22.50
Edited: 26. joulukuuta 2013 kello 16.58
Category: Efektit
Description
Suorituskyvyltään nopea efekti joka saa pelimaailman näyttämään vedenalaiselta.
Käyttöohjeet:
1. Lisää koodin alkuun "Const Grid = 14" sekä "Global Fluidize_img"
- Grid -arvoa voi kasvattaa, jos efekti aiheuttaa suorituskykyongelmia
2. Kutsu pelin pääloopissa DrawGame -komentoa ja heti sen jälkeen Fluidize() -funktiota.
3. Fluidize -funktiolle annetaan parametrit KULMA, VOIMAKKUUS ja TILA.
- KULMA määrittää veden animaation etenemisen, ja pyörii välillä 0 - 360. Kasvata tätä lukua silmukassasi.
- VOIMAKKUUS määrittää efektin vahvuuden, ja se kannattaa pitää varsin pienissä luvuissa, esim. 3-5.
- TILA mahdollistaa valitsemisen monesta eri efektistä. Oletuksena vaihtoehdot 0-2.
Katso myös nopeampi liquid-tehoste:
http://www.cbrepository.com/codes/code/48/
Code
Select all1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | SCREEN 640,480
SetWindow "Fluidize"
map = LoadMap("Media\cdm2.til","Media\tileset.bmp")
guy = LoadObject("Media\guy.bmp",40)
Const Grid = 14 // Efektin ruudukon koko - pienemmillä arvoilla hienompi, mutta hitaampi
Global Fluidize_img // Pakollinen globaali
intensity = 3 // Efektien voimakkuus
Repeat
angle# = WrapAngle(angle# + 10) // Ohjaa veden liikettä - ilman tätä vesi pysyy paikoillaan
// Tämän luvun muutokset kannattaa tehdä FPS -riippumattomiksi
If LeftKey() Then TurnObject guy,4 // Ukon kontrollointi
If RightKey() Then TurnObject guy,-4
If UpKey() Then MoveObject guy,3
If DownKey() Then MoveObject guy,-3
If KeyHit(cbkeyspace) Then mode + 1 // Efektien kontrollointi
If mode > 2 Then mode = 0
If KeyHit(cbkeyq) Then intensity + 1
If KeyHit(cbkeya) Then intensity - 1
DrawGame // Tätä on kutsuttava ennen Fluidize -funktiota.
Fluidize(angle,intensity,mode) // Päivitetään efektit
Color 255,255,255
Text 20,20,"FPS: "+FPS()
Text 20,ScreenHeight() - 30,"INTENSITY <Q/A> : "+intensity
Text 20,ScreenHeight() - 48,"EFFECT <space> : "+mode
DrawScreen
Forever
Function Fluidize(ang#,amp#,id)
sw = ScreenWidth()
sh = ScreenHeight()
randscale = amp/3
If Fluidize_img = 0 Then
Fluidize_img = MakeImage(ScreenWidth(),ScreenHeight())
EndIf
For Y = 1 To sh Step Grid
For X = 1 To sw Step Grid
Select id
Case 1
targetx = x + Cos(x+ang)*amp + Rand(-randscale,randscale)
targety = y - Sin(y+ang)*amp + Rand(-randscale,randscale)
Case 2
targetx = x + Cos(x+ang)*amp
targety = y
Default
targetx = x + Cos(y+ang)*amp
targety = y + Cos(x+ang)*amp
End Select
CopyBox x,y,grid,grid,targetx,targety,SCREEN(),Image(Fluidize_img)
Next X
Next Y
DrawImage Fluidize_img,0,0
EndFunction
|
Comments
No comments. You can be first!
Leave a comment
You must be logged in to comment.