Login Register
Frontpage Code library Pastebin

Fluidize -vesitehoste

Author: Ruuttu
Added: 9.4.2011 22:50
Edited: 26.12.2013 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 all
 1
 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.