Kimpoaminen/pomppaus
Kimpoaminen/pomppaus
Okei, eli miten saan objektin pomppaamaan lattiasta ja liikkumaan samalla vähän eteenpäin, eli siis pomppimaan eteenpäin ja miten saan sen myös kimpoamaan takaisin seinästä kun sellainen tulee vastaan? Pähkinänkuoressa: objekti pitäisi siis saada pomppimaan edestakaisin ruudulla...
Kiitos jo näin etukäteen!
Kiitos jo näin etukäteen!
Re: Kimpoaminen/pomppaus
Objektia liikutaan sivusuunnassa aina muuttujan xplus verran. Jos törmätän seinään, xplus kerotaan miinus yhdellä. Kun painetaan oikeaa nuolta, xplussaan lisätään vaikka 0.1 tai muu pieni määrä (pehmeä kiihtyminen) ja vastaavasti vasemmalla nuolella vähennetään.
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
Re: Kimpoaminen/pomppaus
Selvä, mutta miten saan itse pomppimisen hoidettua kun en käytä tilekarttoja niin en voi käyttää JumpObject()-funktiota. Mulla on siis kuva taustalla ja objeckti pitäisi saada tietyssä kohtaa esim. if objecty(obj)=300 then...
Re: Kimpoaminen/pomppaus
Onko tarkoituksena tehdä sellainen liikkuminen minkä Harakka mainitsisi (eli objekti liikkuisi vaikkei nuolta painettaisikaan) vaiko sellainen, jossa objekti on paikallaan ellei näppäintä paineta tai hiirtä liikuteta?
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Re: Kimpoaminen/pomppaus
objektin olisi siis tarkoitus liikkua ilman että nuolta painetaan.
Re: Kimpoaminen/pomppaus
Selvä homma. Odotappas max. 10min niin oon editoinut tähän viestiin kyseisen koodin.Sly_Jack0 wrote:objektin olisi siis tarkoitus liikkua ilman että nuolta painetaan.
EDIT:
Sieltä tulikin sitten paljon parempi koodi, käytä sitä (alla oleva siis)
Last edited by valscion on Wed Dec 12, 2007 8:14 pm, edited 2 times in total.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Re: Kimpoaminen/pomppaus
Esimerkkikoodi:
Code: Select all
SCREEN 800,600
lehma = LoadObject("media/cow.bmp")
VASEN_LAITA = -ScreenWidth()/2 + ObjectSizeX(lehma)/2 'LEHMÄ TÖRMÄÄ SEN REUNASTA, EI KESKELTÄ
OIKEA_LAITA = ScreenWidth()/2 - ObjectSizeX(lehma)/2
YLALAITA = ScreenHeight()/2 - ObjectSizeY(lehma)/2
ALALAITA = -ScreenHeight()/2 + ObjectSizeY(lehma)/2
Const MAXNOPEUS = 15 'NOPEUS RAJOITETAAN TÄHÄN
Const HIDASTUS# = 0.98 'KERROIN, JOLLA NOPEUS HIDASTUU JATKUVASTI (1 = EI HIDASTUMISTA)
Const KIIHTYVYYS# = 0.2 'KUINKA PALJON VAUHTI KIIHTYY NÄPPÄINTÄ PAINETTAESSA
Dim xplus#
Dim yplus#
Repeat
If ObjectX(lehma) < VASEN_LAITA Or ObjectX(lehma) > OIKEA_LAITA Then
xplus = -xplus
EndIf
If ObjectY(lehma) > YLALAITA Or ObjectY(lehma) < ALALAITA Then
yplus = -yplus
//SEURAAVALLA PÄTKÄLLÄ ESTETÄÄN JUMIIN JÄÄMINEN
Repeat
If ObjectY(lehma) > YLALAITA Then
TranslateObject lehma,0,-1
ElseIf ObjectY(lehma) < ALALAITA Then
TranslateObject lehma,0,1
EndIf
Until ObjectY(lehma) < YLALAITA And ObjectY(lehma) > ALALAITA
EndIf
If RightKey() Or LeftKey() Or UpKey() Or DownKey() Then 'JOS NÄPPÄINTÄ PAINETAAN
xplus = xplus + RightKey()*KIIHTYVYYS - LeftKey()*KIIHTYVYYS 'KIIHDYTYS
yplus = yplus + UpKey()*KIIHTYVYYS - DownKey()*KIIHTYVYYS
xplus = Max(-MAXNOPEUS,Min(MAXNOPEUS,xplus)) 'NOPEUKSIEN RAJOITUS
yplus = Max(-MAXNOPEUS,Min(MAXNOPEUS,yplus))
Else
xplus = xplus*HIDASTUS 'JOS EI LIIKUTA, HIDASTUU
yplus = yplus*HIDASTUS
EndIf
TranslateObject lehma,xplus,yplus 'SIIRRETÄÄN LEHMÄÄ
DrawScreen
Forever
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
Re: Kimpoaminen/pomppaus
Suosittelisin vielä käyttämään FrameLimit komentoa rajoittamaan pelinopeutta koodin alussa...
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Re: Kimpoaminen/pomppaus
okei... en ole mikään mestari tässä hommassa joten osaa oikein soveltaa tuota, mutta pitäisi saada Bubble Trouble -pelin tyylinen pomppiminen. linnki: http://www.miniclip.com/games/bubble-trouble/en/
Re: Kimpoaminen/pomppaus
Ollaanpa sitä vaativia. Lisäsin koodiin painovoiman.
Ajattelitko tehdä jotain itsekin?
Code: Select all
FrameLimit 60
SCREEN 800,600
lehma = LoadObject("media/cow.bmp")
VASEN_LAITA = -ScreenWidth()/2 + ObjectSizeX(lehma)/2 'LEHMÄ TÖRMÄÄ SEN REUNASTA, EI KESKELTÄ
OIKEA_LAITA = ScreenWidth()/2 - ObjectSizeX(lehma)/2
YLALAITA = ScreenHeight()/2 - ObjectSizeY(lehma)/2
ALALAITA = -ScreenHeight()/2 + ObjectSizeY(lehma)/2
Const MAXNOPEUS_X# = 8.0 'NOPEUS SIVUSUUNNASSA RAJOITETAAN TÄHÄN
Const MAXNOPEUS_Y# = 20.0 'NOPEUS PYSTYSUUNNASSA RAJOITETAAN TÄHÄN
Const HIDASTUS# = 1.00 'KERROIN, JOLLA NOPEUS HIDASTUU JATKUVASTI (1 = EI HIDASTUMISTA)
Const KIIHTYVYYS# = 0.2 'KUINKA PALJON VAUHTI KIIHTYY NÄPPÄINTÄ PAINETTAESSA
Const PAINOVOIMA# = 0.4
Dim xplus#
Dim yplus#
PositionObject lehma,Rand(VASEN_LAITA,OIKEA_LAITA),Rand(ALALAITA,YLALAITA)
Repeat
If ObjectX(lehma) < VASEN_LAITA Or ObjectX(lehma) > OIKEA_LAITA Then
xplus = -xplus
EndIf
If ObjectY(lehma) > YLALAITA Or ObjectY(lehma) < ALALAITA Then
yplus = -yplus
//SEURAAVALLA PÄTKÄLLÄ ESTETÄÄN JUMIIN JÄÄMINEN
Repeat
If ObjectY(lehma) > YLALAITA Then
TranslateObject lehma,0,-1
ElseIf ObjectY(lehma) < ALALAITA Then
TranslateObject lehma,0,1
EndIf
Until ObjectY(lehma) < YLALAITA And ObjectY(lehma) > ALALAITA
EndIf
If RightKey() Or LeftKey() Or UpKey() Or DownKey() Then 'JOS NÄPPÄINTÄ PAINETAAN
xplus = xplus + RightKey()*KIIHTYVYYS - LeftKey()*KIIHTYVYYS 'KIIHDYTYS
//SEURAAVA RIVI ON KOMMENTOITU, KOSKA TÄSSÄ ESIMERKISSÄ EI VOI KONTROLLOIDA PYSTYSUUNTAISTA VAUHTIA
'yplus = yplus + UpKey()*KIIHTYVYYS - DownKey()*KIIHTYVYYS
xplus = Max(-MAXNOPEUS_X,Min(MAXNOPEUS_X,xplus)) 'NOPEUKSIEN RAJOITUS
yplus = Max(-MAXNOPEUS_y,Min(MAXNOPEUS_Y,yplus))
Else
xplus = xplus*HIDASTUS 'JOS EI LIIKUTA, HIDASTUU
yplus = yplus*HIDASTUS
EndIf
yplus - painovoima
TranslateObject lehma,xplus,yplus 'SIIRRETÄÄN LEHMÄÄ
DrawScreen
Forever
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)
Re: Kimpoaminen/pomppaus
Kiitoksia, tämä auttoi paljon...