Terve kaikki!
Olen yrittänyt selvittää tätä itse sekä lukemalla kaikenlaisia topikkeja, mutta en saa vastausta ongelmaaani joka tulee nyt:
Olen tekemässä RPG-kuvakulmasta räiskintäpeliä, en haluaisi millään jättää ideaa sikseen, koska olen tehnyt jo aika paljon
grafiikoista ja musiikeista.
Siispä vihdoinkin asiaan: Pulmani lienee selvä, miten saada animoidulle objektille tekoäly?
Sellainen että se kävelis itsekseen ja sit vaikka joku
If Distance2 (jokupaska1, jokupaska2) Then hyökkää-pelaajan kimppuun sillee ett animaatio kuvake vaihtuis ettei se kävelis sivuttain ylöspäin. Kiitoksia jo etukäteen.
RPG-TEKOÄLY
Re: RPG-TEKOÄLY
Käytä data kerroksia.
Re: RPG-TEKOÄLY
Animointiin löytyy apuja oppitunnista 19:painovoima. Eli kun objektien etäisyys(distance2) on tarpeeksi pieni, vaihda objektin animaatio toiseksi komennolla PaintObject. Sitten käännät objektin kohti hyökkäyskohdetta komennolla PointObject ja laitat sen liikkumaan komennolla MoveObject. Kun etäisyys on tarpeeksi pieni, lopeta liikkuminen ja käynnistä hakkausanimaatio.
Pelkkä ukon liikkuminen onnistuu vaikka näin:
Pelkkä ukon liikkuminen onnistuu vaikka näin:
Code: Select all
'Liikuttaa sotilasta, joka kääntyy sekunnin välein.
ukko=LoadObject("Media\soldier.bmp",72)
aika = Timer()
Repeat
t = Timer()
'Kun aikaa ON kulunut yli sekunti:
If t - aika > 1000 Then
aika = Timer()
TurnObject ukko, 90
EndIf
MoveObject ukko, 1
DrawScreen
Forever
Asian tuntian oikein kirjoitus ohjeet:
-Älä tee yhdys sana virheitä.
-Vältä lyhenteitä mahd. muk.
-Yksi sanaiset lauseet? Unohda.
-Älä tee yhdys sana virheitä.
-Vältä lyhenteitä mahd. muk.
-Yksi sanaiset lauseet? Unohda.
Re: RPG-TEKOÄLY
Ja mikä on "role-playing game"-kuvakulma? o__O'
-
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
Re: RPG-TEKOÄLY
Varmaan tarkoittaa ylä-viistoa, koska silleenhän RPG:t yleensä kuvataan.Bambi wrote:Ja mikä on "role-playing game"-kuvakulma? o__O'
Re: RPG-TEKOÄLY
Jaa, jotta jonkin sortin yläviistosta tehtyä räiskintää haaveilet. Noh, tässähän on se ongelma, että sinun täytyy tehdä eri suuntiin liikkumisille eri animaatiot, tahi ainakin spritet, jotta peli ei näytä karmealta. "3D"-maastoon tungetut 2D-objektit tuppaavat pahasti pistämään silmään. Ja sitten kun suunta vaihtuu, muutetaan animaatio liikkeen suuntaa kuvaavaksi.
Helpointa lienee luoda vihollisille oma objecti MakeObject-komennolla, jonka päälle sitten maalaan (PaintObject) animaatio, jota sitten soitetaan. Mutta tietyn ehdon, esimerkiksi etäisyyden pelihahmoon täyttyessä osoitetaan tämä alkuperäinen objekti pelihahmoa kohti ja liikutetaan sitä. Mikäs hyöty tästä sitten on? No se, että näin et käännä itse kuvaa, vaan näkymätöntä objektia, jota voit liikutella vapaasti ja maalailla sen päälle vaikka mitä kivaa. Eli samalla kun siirrät pääobjektia, niin maalaatkin sen yhtäkkiä eri animaatiolla tai animaation kohdalla.
Jos esimerkiksi vihulaisen lepoanimaatio on päällä, ja lasket, että pelihahmo tulee tarpeeksi lähelle, niin kannattaa ensin selvittää mihin suuntaan sitä vihua kannattaa liikuttaa. Tämä onnistuu ihan yksinkertaisesti ObjectX ja ObjectY-komennoilla.
Siinä liike. Sitten vain samalla tavalla testaamalla laitat oikean animaation pyörimään, eli jos vihu on hahmon oikealla puolella, niin animaatio vasemmalle kävelevästä vihusta soimaan hop. Kannattaa tosin tarkistaa kulma, josta hahmo on tulossa, jos aiot tehdä 8-suuntaisen kävelyanimaation. Jos kulma on sitten esimerkiksi väliä 22,5-67,5 niin tiedät hahmon tulevan yläoikealta ja osaat laittaa oikean animaation pyörimään.
Kun taas vihu on tarpeeksi lähellä, niin taisteluanimaatio käyntiin ja sankarin hiparit laskuun, ehkä jopa synkissä animaation kanssa. Kannattaa silti muistaa joka loopissa tarkistaa, ettei vain päähahmo ole paennut läheltä. Jos näin on päässyt käymään, lasket taas suunnan, animaatio pyörimään ja ei kun matkaan!
Siinä, jos tuo auttoi lainkaan niin hyvä vain. Jatkokysymyksiä saa esittää, ja voin tyhmentääkin koodia sinulle, jos on tarvis ;) kunhan kysyt. Kannattaa muuten sitten toteuttaa viholliset typeillä, jotka vaikka tuovatkin hieman monimutkaisuutta koodiin, helpottavat huomattavasti suurempien vihollislaumojen hallintaa. Ja siis ehkäpä tärkein asia on huomata, että kannattaa liikuttaa näitä hahmojasi TranslateObject-komennolla, jolloin ei objekteja tarvitse lainkaan käännellä. Myös tuo näkymätön pääobjekti on oleellinen osa matkalla kohti toimivampaa koodia, ja PositionX ja -Y-komennoilla pääset pitkälle. Muista, mikään ongelma ei ole niin suuri etteikö sitä purkalla korjattaisi ;)!
Helpointa lienee luoda vihollisille oma objecti MakeObject-komennolla, jonka päälle sitten maalaan (PaintObject) animaatio, jota sitten soitetaan. Mutta tietyn ehdon, esimerkiksi etäisyyden pelihahmoon täyttyessä osoitetaan tämä alkuperäinen objekti pelihahmoa kohti ja liikutetaan sitä. Mikäs hyöty tästä sitten on? No se, että näin et käännä itse kuvaa, vaan näkymätöntä objektia, jota voit liikutella vapaasti ja maalailla sen päälle vaikka mitä kivaa. Eli samalla kun siirrät pääobjektia, niin maalaatkin sen yhtäkkiä eri animaatiolla tai animaation kohdalla.
Jos esimerkiksi vihulaisen lepoanimaatio on päällä, ja lasket, että pelihahmo tulee tarpeeksi lähelle, niin kannattaa ensin selvittää mihin suuntaan sitä vihua kannattaa liikuttaa. Tämä onnistuu ihan yksinkertaisesti ObjectX ja ObjectY-komennoilla.
Code: Select all
If ObjectX(vihu) < ObjectX(hahmo) Then 'jos vihu on pelihahmon vasemmalla puolella
TranslateObject vihu,1,0 'liikutetaan sitä oikealle
ElseIf ObjectX(vihu) > ObjectX(hahmo) Then 'jos taas oikealla.. (pelkkä else ei riitä, muuten vihu liikkuisi myös hahmon
'ollessa suoraan yllä)
TranslateObject vihu,-1,0 'vihu menee vasemmalle
EndIf
If ObjectY(vihu) < ObjectY(hahmo) Then 'jos vihu on pelihahmon alla
TranslateObject vihu,0,0.8 'menköön se taas ylös
ElseIf ObjectY(vihu) > ObjectY(hahmo) Then 'nyt vihu taas on yllä
TranslateObject vihu,0,-0.8 'joten suuntima otetaan alas
EndIf 'Y-koordinaatistossa liikutaan vähemmän kuin X:ssä, jotta kolmiulotteisuuden
'illuusio säilysi. Kokeilemalla löytyy oikea arvo Y:lle
Kun taas vihu on tarpeeksi lähellä, niin taisteluanimaatio käyntiin ja sankarin hiparit laskuun, ehkä jopa synkissä animaation kanssa. Kannattaa silti muistaa joka loopissa tarkistaa, ettei vain päähahmo ole paennut läheltä. Jos näin on päässyt käymään, lasket taas suunnan, animaatio pyörimään ja ei kun matkaan!
Siinä, jos tuo auttoi lainkaan niin hyvä vain. Jatkokysymyksiä saa esittää, ja voin tyhmentääkin koodia sinulle, jos on tarvis ;) kunhan kysyt. Kannattaa muuten sitten toteuttaa viholliset typeillä, jotka vaikka tuovatkin hieman monimutkaisuutta koodiin, helpottavat huomattavasti suurempien vihollislaumojen hallintaa. Ja siis ehkäpä tärkein asia on huomata, että kannattaa liikuttaa näitä hahmojasi TranslateObject-komennolla, jolloin ei objekteja tarvitse lainkaan käännellä. Myös tuo näkymätön pääobjekti on oleellinen osa matkalla kohti toimivampaa koodia, ja PositionX ja -Y-komennoilla pääset pitkälle. Muista, mikään ongelma ei ole niin suuri etteikö sitä purkalla korjattaisi ;)!
Ratkaisit juuri universaaliongelman! Hienoa, ota keksi.
Filosofia on ajattelun taidetta, mutta sen maalari elää juoden apurahojaan masennukseensa.
Filosofia on ajattelun taidetta, mutta sen maalari elää juoden apurahojaan masennukseensa.
Re: RPG-TEKOÄLY
Ozcarilla kuluu näppis puhki ennen seuraavia 75 viestiä jos jokaisesta samanlaisen romaanin tekee.
Pikku vinkkinä.
Jos et noita osaa tehdä,taidat olla vielä naabimpi mitä minä,ja kovin monimutkainen räiskintä ois parasta nyt jäädyttää siihen asti että on oppinut hieman.
Pikku vinkkinä.
Jos et noita osaa tehdä,taidat olla vielä naabimpi mitä minä,ja kovin monimutkainen räiskintä ois parasta nyt jäädyttää siihen asti että on oppinut hieman.
Huuda mun ip:tä!