Page 1 of 1

Zoomaus härpäke 2D peliin.

Posted: Tue Aug 03, 2010 2:26 am
by MaGetzUb
En kerro mitään, testatkaa itse.
Ja skaalaimen minimi limit kusee. (Sen vähä täs nyt kerron etukäteen.)

Code: Select all

Const SW = 640 
Const SH = 480

SCREEN SW, SH

'lataa kartta
kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
ObjectPickable kartta, ON 'aseta se poimittavaksi
PlayObject kartta,0,0,1 'animoi kartta

'lataa pelaaja
ukko = LoadObject ("Media\guy.bmp",72)

'lataa vihulainen
vihu = LoadObject ("Media\guy.bmp",72)
ObjectPickable vihu, 2 'aseta se poimittavaksi
PositionObject vihu, 32,150 'sijoita ylemmäs

'törmäykset
SetupCollision ukko, vihu, 2, 2, 2
'kartta-törmäykset on hyvä esitellä viimeiseksi
SetupCollision ukko, kartta, 1, 4, 2

buf1 = MakeImage(SW, SH)
buf2 = MakeImage(SW, SH)
times# = 1
AddText "Välilyönnillä skaalain päälle/pois"
AddText "Hiiren rullasta taikka näppäimillä q/a säädä skaalaa."
suurennus = True
Repeat
    SetWindow ""+FPS()
    'Ukon ohjaus
    If LeftKey() Then TurnObject ukko,5
    If RightKey() Then TurnObject ukko,-5
    If UpKey() Then MoveObject ukko,2
    If DownKey() Then MoveObject ukko,-2

    UpdateGame

    
    DrawGame
    
    //Alemmalla koodirivillä on iki-ihanaa purkkaa.. <3
    If suurennus = True Then  
        PositionCamera ObjectX(ukko) - (SW * zoom#/2) + SW/2, ObjectY(ukko) + (SH * zoom#/2) - SH/2
    Else 
        CloneCameraPosition ukko
    EndIf 
    suurennus = suurennus Xor KeyHit(57)
    
    times = times + MouseMoveZ()*0.005
    times = times + 0.005*(KeyDown(cbkeyq) - KeyDown(cbkeya))
    times = Max(0, times)
    zoom# = Float(1/times)
    If suurennus = True Then 
        DrawToWorld OFF
        DrawToImage buf1 //Tyhennetään kuvapuskuri1:n jääneet turhat rojut maalaamalla se mustaksi.
            Color cbblack
            Box 0, 0, SW, SH
        DrawToImage buf2 //Tyhennetään kuvapuskuri2:n jääneet turhat rojut maalaamalla se mustaksi myös.
            Color cbblack
            Box 0, 0, SW, SH
        DrawToScreen 
        For i = 0 To SW
            CopyBox Int(i*zoom#), 0, 1, SH, i, 0, SCREEN(), Image(buf1)
        Next i
        For i = 0 To SH
            CopyBox 0, Int(i*zoom#), SW, 1, 0, i, Image(buf1), Image(buf2)
        Next i
        
        //Ei päästetä "Alkuperäistä" taustaa näkyviin. 
        Color 0, 0, 0 
        Box 0, 0, SW, SH
        DrawImage buf2, 0, 0
    EndIf 
    DrawScreen 'piirrä näyttö

Forever
Koodin käytännöllisyydestä en tiedä, mutta hauskaa katseltavaahan tämä on... Imo. x)

Re: Tuli sitten tehtyä tämmöinen. : P

Posted: Wed Aug 04, 2010 1:46 pm
by DJ-Filbe
Ei hullumpi! Vielä kun saat skaalauksen keskelle, niin se on siinä!