2017-05-03

Bideojokuan aurrera egiteko laguntza apur bat

Aurten pixka bat atzeratuta gabiltza jokuarekin eta gainera azken egunetan SweptController delakoarekin arazoak izan ditugu talkak detektatzeko...
Sarrera honen bidez aurrera egin dezazuen pare bat aholku utziko dizkizuet.

Talkak detektatzeko aldaketa txikia SweptController-ean

Swept Controler
Swept ControllerMarka ezazue ForwardEvents eta horrela, gure pertsonaiak talkak detektatuko ditu eta haiei erantzun ahal izango die.
Horrekin soilik ez da nahiko
CustomCollisionEventTracker osagaia ere gehitu behar zaio pertsonaiari.



Level berriak sortu 

Orain arte, Level bakar batean egon gara lanean. Bere izena berez Level delarik.(Aldatu izena Level1 izan dadin). Baina hau izango da gure jokuaren lehenengo mailan gaudenean kargatu behar dena. Hasteko interesgarria izango zen beste leiho bat agertzea gure jokuaren izena eta jolasteko modua azaltzen digularik. (StartLevel?)
Gainera, bai maila bat gainditu dugunean (WinLevel?) eta bai galdu dugunean (GameOverLevel?) beste leiho batzuk agertzea interesgarria izango zen. Hauetan, tekla bat sakatuz jolasa berriz hasi genezake eta beste tekla batekin (Esc) jokutik irtetzeko aukera eman.

Beste Level bat sortzeko bi modutan egin dezakezue:
1- Level berria hutsik egotea nahi baduzue, Add->Resources: Level aukeratu eta Izen egokia ipini ondoren Create sakatu.

2- Pantaila berria beste Level baten antzekoa bada, beharbada interesgarriagoa izango da "Library"-n Level etiketa sakatu  (edo "Level" bilatu) eta dagokion Level-a aukeratu, bere gainean eskuinekio botoiarekin sakatu eta menuan Duplicate aukeratu. Ondoren, Level berriari izena aldatu.(Menu berean Rename)

Level desberdinak editatu

Level bat editatzeko, Library-n "Level" bilatu edo Level etiketan sakatu eta dauzkazun Level guztiak agertuko zaizkizu. Nahi duzuna aukeratu eta betiko moduan, Spriteak, SpriteText-ak edota nahi dituzun elementuak joan sartzen.
Interesgarria izan daiteke edozein pantailan zaudela jokuatik irtetzeko aukera egotea adibidez ESC tekla sakatuz. Gero ipiniko dizuet hori nola egin dezakezuen....

Jokuaren hasierako pantaila zein izan behar den definitu

Horretarako Library-n, "Game" bilatu eta bere gainean arratoia ipini. Bere properties leihoan, DefaultGameSetup osagaian "StartingLevel" ezaugarrian, dagoen izenean sakatu eta dituzun Level guztien artean aukeratu ahal izango duzu zein izango den hasieran kargatu behar dena.


Nola egin Level bat karga dadin kodearen bidez

this.Space.LoadLevel(Level.Find("LevelIzena"));//Noski LevelIzena aldatu!

Nola amaitu jokua kodearen bidez

this.GameSession.Quit();

Zer egin pertsonaia hiltzen denean

Gure pertsonaia, etsai batekin talka eginez gero, hil beharko da, hau da, desagertu, baina horretaz gain, bizitza bakarra badauka, GameOverLevel pantaila ere agertu beharko litzateke.

Bizitza bat baino gehiago izango balitu, bizitza kopuruaren kontua daraman aldagaiaren balioari bat kendu. Aldagai horren balio berria zero bada, hau da, bizitza guztiak agortu baditu, lehen esandakoa egin, hau da, pertsonaia desagartarazi eta GameOverPantaila erakutsi. Bestela,  edo ezer egin gabe jarraitu, edo berriro hasierako baldintza batzuetara eraman pertsonaia... Ideia ona izan daiteke BizitzaKopurua Property bezala definitzea eta beraz konfiguragarria izatea...

Pertsonaia desagertarazteko kodea hauxe da:
this.Owner.Destroy();

Kontuz pertsonaia desagertarazi eginez gero ez baduzue beste pantaila batera zuzenean pasatzen. Gehienek egin duzue kamerak pertsonaia jarraitzea eta pertsonaia ez badago, script horrek failatuko baitu!


Non ipini puntuen kontagailuak, bizitzen kontagailuak eta jokuaren kudeakertarako aldagaiak

LevelSetting objektuari esleitutako ZilchScript batean definitu aldagai horiek klase aldagai modura.
Izan daiteke "GameLogicizeneko ZilchScript bat non aldagai horiek definitu ditugun, e.a.

Beste edozien lekutik, funtzio horiek erabiltzeko, this.LevelSettimgs...erabiliz egin daiteke.
Adibidez:
        this.LevelSettings.GameLogic.PuntuKopurua +=-1;          
        this.LevelSettings.PuntuKudeaketa.PuntuKopuruaErakutsi();

Zure jokalaria plataformatik doala barrurantz jausten bada...

Irakurri ondoko estekan dagoen informazioa, ea horrela lortzen dugun konpontzea...
Tilemapekin bereziki gertatzen bazaizue, froga egizue "Mergeable" ezaugarria aktibo izaten tilemapa egiten duzuen bitartean.
Beste aukera bat da zuen pertsonaiaren collider-a aldatzea eta box edo capsule collider bat ipintzea MultiConvexMeshCollider bat ipinita badaukazue... 

Arratoiarekin klik egitean sprite batetan ... beste Level batera pasatu

Horretarako, lehendabizi, spriteari Reactive izeneko gehigarria ipini beharko diozu.
Ondoren, ZilchScript berri bat sortu, MouseControl adibidez, (eta gero ez ahaztu sprite horri esleitzea!) eta bertan Initialize funtzioaren barruan OnMouseUp ebentoak jaso nahi dituzula adierazi:

Zero.Connect(this.Space, Events.MouseUp, this.OnMouseUp);

Ondoren, OnMouseUp funtzioa idatzi beharko duzu eta barruan gertatzea nahi duzun hori programatu, honela:

function OnMouseUp(event : ViewportMouseEvent)
{
        //Kasu honetan, "Level1" deritzon Levela kargatuko dugu ...
        this.Space.LoadLevel(Level.Find("Level1"));
}



iruzkinik ez:

Argitaratu iruzkina

Idatzi zure komentarioa. Laster argitaratuko dut. Mila esker!