Re: Tyhmät kysymykset (I/2011)
Posted: Wed Feb 09, 2011 7:24 pm
Kuinka saan selville objektin tilekordinaatit?
Game Making Should Be Easy...
https://www.coolbasic.com/phpBB3/
Getmap :lla nyt ainakin saat.Character wrote:Kuinka saan selville objektin tilekordinaatit?
Eikun oho, tuli jokin hassu ajatusvirhe.
Eikun ei ole. >_< Uutta koodia tulosa...
Noniin.
Code: Select all
((ObjectX(obj)+CameraX())/tile_leveys+1)+((ScreenWidth()/tile_leveys+1)*(ObjectY(obj)+CameraY()/tile_korkeus))
Kaivelin wanhoista, hylätyistä projektien kansiosta tälläisen pätkän.Character wrote:Kuinka saan selville objektin tilekordinaatit?
Code: Select all
TILE_X=RoundUp((ObjectX(obj)+(ObjectSizeX(map)/2.0)-ObjectX(map))/Tilen_leveys)
TILE_Y=RoundUp(((ObjectY(map)+(ObjectSizeY(map)/2.0))-ObjectY(obj))/Tilen_korkeus)
Code: Select all
Const PAINOVOIMA = -0.1 'painoviman voimakkuus
'pienempi->suurempi pv.
'positiiviset arvot->
'painovoima ylöspäin?!
yPlus#=0 'Tämä hallitsee hyppyä
'Asetetaan ruutu hieman zoomattuun tilaan
SCREEN 320,240,0,cbsizable
SetWindow "Painovoimaesimerkki",3 'suurenna ruudulle
'JOS PELI TÖKKII TAI PÄTKII TAI NYKII, MUUTA:
' 1) cbSizable -> cbFullScreen
' 2) poista rivi 23
FrameLimit 40 'rajoita nopeutta
'-------------------------------------------------
'lataa kartta, siirrä sitä ylöspäin ja animoi se.
kenttä=LoadMap("Media\jokumap.til","Media\tileset.bmp")
PositionObject kenttä,0,50
PlayObject kenttä,0,0,0.5
'lataa animaatiosarja oikealle, maskaa ja piilota se
oikea=LoadAnimObject("Media\zerorun1.bmp",47,51,0,13)
MaskObject oikea,cbMagenta
ShowObject oikea,OFF
ObjectRange oikea,30,51 'tämä pitää asettaa kaikkiin
'sama vasemmalle
vasen=LoadAnimObject("Media\zerorun2.bmp",47,51,0,13)
MaskObject vasen,cbMagenta
ShowObject vasen,OFF
ObjectRange vasen,30,51 'tämä pitää asettaa kaikkiin
'Tämä on varsinainen pelihahmo, joka piirretään ja
'jota hallitaan. Sille asetetaan törmäys->kartta
'Tätä EI PIILOTETA.
pelihahmo=CloneObject(oikea)
SetupCollision pelihahmo,kenttä,1,4,2
ObjectRange pelihahmo,30,51 'tämä pitää asettaa kaikkiin
'-------------------------------------------------
'Pääsilmukka
Repeat
vauhti=0 'oletuksena ei liikettä
If RightKey() Then
'juokse oikealle
PaintObject pelihahmo,oikea 'vaihda kuvaa...
If maassa Then PlayObject pelihahmo,2,11,0.25
vauhti=2 'vauhtia oikealle
ElseIf LeftKey() Then
'juokse vasemmalle
PaintObject pelihahmo,vasen 'vaihda kuvaa...
If maassa Then PlayObject pelihahmo,2,11,0.25
vauhti=-2 'vauhtia vasemmalle
Else
'pysäytä animaatio, jos ei liikuta
PlayObject pelihahmo,0
EndIf
'liikuta pelihahmoa
TranslateObject pelihahmo,vauhti,yPlus#
yPlus=yPlus+PAINOVOIMA 'päivitä painovoima
UpdateGame 'päivitä törmäys
CloneCameraPosition pelihahmo 'liimaa kamera
maassa=0 'ilmassa jollei toisin käy ilmi
törmäykset=CountCollisions(pelihahmo)
'katsotaan tärmätäänkö kattoon tai lattiaan
For i=1 To törmäykset
If GetCollision(pelihahmo,i)=kenttä
'lattia
If CollisionAngle(pelihahmo,i)=90 Then
yPlus#=-1
maassa=1 'jalat on maassa
EndIf
'katto
If CollisionAngle(pelihahmo,i)=270 Then
yPlus#=-1
EndIf
EndIf
Next i
'jos ollaan ilmassa, näytä toisenlainen kuva
If törmäykset=0 Then PlayObject pelihahmo,12,0
'HYPPY (vain jos jalat maassa)
If KeyHit(cbKeyZ) And maassa Then
yPlus#=4.5 'voimaa ylös päin
EndIf
DrawScreen 'piirrä näyttö
Until EscapeKey()
Jos valittaa "Can't load map" :ia niin tee kartta vaikka A Stigmatorilla.Execute wrote:En saa ladattua tile-mappiani vaikka se on siinä 1.3 muodossa... Koodi tässä:
Code: Select all
Const PAINOVOIMA = -0.1 'painoviman voimakkuus 'pienempi->suurempi pv. 'positiiviset arvot-> 'painovoima ylöspäin?! yPlus#=0 'Tämä hallitsee hyppyä 'Asetetaan ruutu hieman zoomattuun tilaan SCREEN 320,240,0,cbsizable SetWindow "Painovoimaesimerkki",3 'suurenna ruudulle 'JOS PELI TÖKKII TAI PÄTKII TAI NYKII, MUUTA: ' 1) cbSizable -> cbFullScreen ' 2) poista rivi 23 FrameLimit 40 'rajoita nopeutta '------------------------------------------------- 'lataa kartta, siirrä sitä ylöspäin ja animoi se. kenttä=LoadMap("Media\jokumap.til","Media\tileset.bmp") PositionObject kenttä,0,50 PlayObject kenttä,0,0,0.5 'lataa animaatiosarja oikealle, maskaa ja piilota se oikea=LoadAnimObject("Media\zerorun1.bmp",47,51,0,13) MaskObject oikea,cbMagenta ShowObject oikea,OFF ObjectRange oikea,30,51 'tämä pitää asettaa kaikkiin 'sama vasemmalle vasen=LoadAnimObject("Media\zerorun2.bmp",47,51,0,13) MaskObject vasen,cbMagenta ShowObject vasen,OFF ObjectRange vasen,30,51 'tämä pitää asettaa kaikkiin 'Tämä on varsinainen pelihahmo, joka piirretään ja 'jota hallitaan. Sille asetetaan törmäys->kartta 'Tätä EI PIILOTETA. pelihahmo=CloneObject(oikea) SetupCollision pelihahmo,kenttä,1,4,2 ObjectRange pelihahmo,30,51 'tämä pitää asettaa kaikkiin '------------------------------------------------- 'Pääsilmukka Repeat vauhti=0 'oletuksena ei liikettä If RightKey() Then 'juokse oikealle PaintObject pelihahmo,oikea 'vaihda kuvaa... If maassa Then PlayObject pelihahmo,2,11,0.25 vauhti=2 'vauhtia oikealle ElseIf LeftKey() Then 'juokse vasemmalle PaintObject pelihahmo,vasen 'vaihda kuvaa... If maassa Then PlayObject pelihahmo,2,11,0.25 vauhti=-2 'vauhtia vasemmalle Else 'pysäytä animaatio, jos ei liikuta PlayObject pelihahmo,0 EndIf 'liikuta pelihahmoa TranslateObject pelihahmo,vauhti,yPlus# yPlus=yPlus+PAINOVOIMA 'päivitä painovoima UpdateGame 'päivitä törmäys CloneCameraPosition pelihahmo 'liimaa kamera maassa=0 'ilmassa jollei toisin käy ilmi törmäykset=CountCollisions(pelihahmo) 'katsotaan tärmätäänkö kattoon tai lattiaan For i=1 To törmäykset If GetCollision(pelihahmo,i)=kenttä 'lattia If CollisionAngle(pelihahmo,i)=90 Then yPlus#=-1 maassa=1 'jalat on maassa EndIf 'katto If CollisionAngle(pelihahmo,i)=270 Then yPlus#=-1 EndIf EndIf Next i 'jos ollaan ilmassa, näytä toisenlainen kuva If törmäykset=0 Then PlayObject pelihahmo,12,0 'HYPPY (vain jos jalat maassa) If KeyHit(cbKeyZ) And maassa Then yPlus#=4.5 'voimaa ylös päin EndIf DrawScreen 'piirrä näyttö Until EscapeKey()
Latauslinkkiä ei ole tarjota. Coolbasicilla tehty, turvallinen, Astigman tekemä (nimikin jo kertoo). Turvallisuudesta vielä, että joskus tulee mysteerimaveja. Kannattaa tallennella karttaa vähän välein.Execute wrote:Mistä tämän A Stigmatorn voisi ladata? Turvallinen? Millä tehty? Kuka tehnyt?
Linkkiä emme sinulle anna. Foorumeilla on hakutoiminto. (Ja sillä kyllä löytyy)Execute wrote:Noh voisihan sen ladatakin... Tarvitsisin kylläkin jostain linkin josta ladata... Kun en osaa ladata sellaista jota ei voi ladata! Koska sitä ei löydy!
Se on vaarallinen troijalainen. Älä missään nimessä lataa. Äskeinen oli valehtelua...Execute wrote:Löytyihän se! Mutta onkohan tämä varmasti turvallinen? Virukset eivät ole koneelleni tervettulleita.
Wasn't so fun...Execute wrote:Apua troijalainen!!! Latasin sen!!! Onneksi en vielä asentanut!!! Koneeni on toisen ihmisen vallassa!!! Auttakaa! Plase help me!
Tietenkin huomasin sarkasmin... Enhän minä mikään sokea ole...
Henkilökohtaisesti pidän enemmän TileGenistä joka sentään ei kaadu koko ajan :>Execute wrote:Tämä stigmator on hyvä! Mapit toimii! :mrgreen:
Code: Select all
For luoti.AMMUS = Each AMMUS
For vihol.VIHO = Each VIHO
If luoti <> vihol Then
DeleteObject vihol\vih
Delete vihol
EndIf
Next vihol
Next luoti
Koodissasi on se ongelma, että tarkistat vain ovatko silmukassa läpikäymäsi objektit toisia kuin luoti-objekti. Sinun tulisi tarkistaa törmäykset luoti-objektin kanssa vaikkapa komennon Distance2-avulla. Katso manuaalista Distance2-esimerkki.jorre wrote:Hei vaan kaikille.
Olen nyt ladannut CB:n koneelle, ja alkanut vähän kokeilemaan sitä. Tein nuo kaikki alkuharjotukset läpi ja osaankin suhteellisen hyvin perusasiat (eli huonosti), mutta nyt minulla on ongelma:
Yritän tehdä harjoitukseksi peliä, jossa ohjataan ruudun alareunassa alusta, joka ampuu vastaantulevia vihuja. Ongelmana on kuitenkin se että KAIKKI vihut katoavat automaattisesti, jos ammun aluksellani. Liitän käyttämäni koodin tähän alle, jos se helpottaa...:Code: Select all
For luoti.AMMUS = Each AMMUS For vihol.VIHO = Each VIHO If luoti <> vihol Then DeleteObject vihol\vih Delete vihol EndIf Next vihol Next luoti