Teen peliä, jossa kartat on kuvatiedostoja niin pitäisi saada semmoinen törmäys, että joku
väri olisi seinä ja siitä ei pääsisi läpi.
väritörmäys
Re: väritörmäys
Tekemäni tuto joka löytyy K-Pelit sivustolta, hyvää mainosta Jarelle : DD
Edit: Itse asiassa epäilisin että GetPixel2() olisi nopeampi... Eli poistaa esimerkistä: PickImageColor x,y,img ja vaihtaa seuraavista If lausekkeista: GetRGB() -> GetPixel2() <> -16777216
Eli tossa toi -16777216 on musta, eli jos osutaan johonkin muuhun kuin mustaan väriin niin törmätään..
Edit: Itse asiassa epäilisin että GetPixel2() olisi nopeampi... Eli poistaa esimerkistä: PickImageColor x,y,img ja vaihtaa seuraavista If lausekkeista: GetRGB() -> GetPixel2() <> -16777216
Eli tossa toi -16777216 on musta, eli jos osutaan johonkin muuhun kuin mustaan väriin niin törmätään..
Last edited by phons on Wed Jun 02, 2010 8:54 pm, edited 1 time in total.
Re: väritörmäys
Tässä olisi laatikko tunnistus väreille.
Siirtää X vanhaksi X ja Y vanhaksi Y jos osuu punaiseen
Siirtää X vanhaksi X ja Y vanhaksi Y jos osuu punaiseen
Code: Select all
X=200
Y=150
Repeat
Color CbRed
Box 0,0,100,100,1
VanhaX=X
VanhaY=Y
X=X+(RightKey()-LeftKey())
Y=Y-(UpKey()-DownKey())
For i = - 10 To 10
For ii = -10 To 10
PickColor X+i,Y+ii
If getRGB(RED)=255 And getRGB(GREEN)=0 And getRGB(BLUE)=0 Then
X=VanhaX
Y=VanhaY
EndIf
Next ii
Next i
Color CbWhite
Circle X-10,Y-10,20,1
DrawScreen
Forever
Re: väritörmäys
Tässä on funktio, jolla voi tarkistaa onko lukitulla näytöllä/kuvalla oleva piste muuta kuin mustaa.
Tässä on taas funktio, jolla tarkistetaan että onko testauskohdan väri eri kuin haluttu väri:
Code: Select all
Function TestPoint(x, y, buffer)
Return GetPixel2(x, y, buffer) <> -16777216
EndFunction
Code: Select all
Function TestPoint(x, y, buffer, r, g, b)
Return GetPixel2(x, y, buffer) <> (b + g shl 8 + r shl 16)
Endfunction
Solar Eclipse
We're in a simulation, and God is trying to debug us.
-
- Newcomer
- Posts: 36
- Joined: Fri Mar 20, 2009 3:29 pm
Re: väritörmäys
Mutta entäs jos pitäisikin käyttää maailmankoordinaatteja ruudunkoordinaattien sijasta ?!
Itselläni nimittäin on tullut projussani sellainen probleema...
Itselläni nimittäin on tullut projussani sellainen probleema...
(\__/)
(='.'=)
(")_(")
(='.'=)
(")_(")
Re: väritörmäys
Siksi onkin tehty tällaiset:Herra HoOpO wrote:Mutta entäs jos pitäisikin käyttää maailmankoordinaatteja ruudunkoordinaattien sijasta ?!
Itselläni nimittäin on tullut projussani sellainen probleema...
Code: Select all
Function SXtoworldX(mx)
Return mx-CameraX()+ScreenWidth()/2
EndFunction
Function SYtoworldY(my)
Return -my+CameraY()+ScreenHeight()/2
EndFunction
Mielummin piirrät kuvan maailmaan, DrawToWorld OFF,ON
Tosin silloin GetPixel ei toimi ellet muunna koordinaatteja world -> screen näillä:
Code: Select all
Function ObjectSX(obj)
Return ObjectX(obj)+ScreenWidth()/2-CameraX()
EndFunction
Function ObjectSY(obj)
Return -ObjectY(obj)+ScreenHeight()/2+CameraY()
EndFunction
Re: väritörmäys
Itseasiassa, jos lukitset ruudun, et voi tarkistaa muutakuin ruudun sisäpuolella olevia pikseleitä, muuten tulee mav. Sen takia suosittelen, että maailma olisi kuva. Niin kuvan pikseleitä voitaisiin tarkistaa ruudun ulkopuoleltakin.
Solar Eclipse
We're in a simulation, and God is trying to debug us.
Re: väritörmäys
Jolloin siis tietysti lukittaisiin kuva ja käsiteltäisiin kuvan pikseleitä eikä ruudun.MaGetzUb wrote:Itseasiassa, jos lukitset ruudun, et voi tarkistaa muutakuin ruudun sisäpuolella olevia pikseleitä, muuten tulee mav. Sen takia suosittelen, että maailma olisi kuva. Niin kuvan pikseleitä voitaisiin tarkistaa ruudun ulkopuoleltakin.