RPG-TEKOÄLY

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
P-E-R-K-E-L-E

RPG-TEKOÄLY

Post by P-E-R-K-E-L-E »

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. ;)
Jormalaz
Member
Posts: 77
Joined: Sun Jun 15, 2008 9:22 pm

Re: RPG-TEKOÄLY

Post by Jormalaz »

Käytä data kerroksia.
Nemesis
Member
Posts: 51
Joined: Sat May 17, 2008 1:54 pm

Re: RPG-TEKOÄLY

Post by Nemesis »

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:

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.
User avatar
Bambi
Member
Posts: 87
Joined: Sat Nov 24, 2007 12:51 pm

Re: RPG-TEKOÄLY

Post by Bambi »

Ja mikä on "role-playing game"-kuvakulma? o__O'
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: RPG-TEKOÄLY

Post by Koodiapina »

Bambi wrote:Ja mikä on "role-playing game"-kuvakulma? o__O'
Varmaan tarkoittaa ylä-viistoa, koska silleenhän RPG:t yleensä kuvataan.
Ozcar
Advanced Member
Posts: 439
Joined: Mon Aug 27, 2007 8:43 pm
Location: Helsinki

Re: RPG-TEKOÄLY

Post by Ozcar »

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.

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
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 ;)!
Ratkaisit juuri universaaliongelman! Hienoa, ota keksi.

Filosofia on ajattelun taidetta, mutta sen maalari elää juoden apurahojaan masennukseensa.
Olwi
Devoted Member
Posts: 557
Joined: Sun Dec 30, 2007 4:15 pm
Location: Muhos

Re: RPG-TEKOÄLY

Post by Olwi »

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.
Huuda mun ip:tä!
Post Reply