Fortsat fra sidste post
Til mit battle system skal jeg bruge:
- Jeg skal have nogle particle effects som jeg kan smide på spells
- jeg skal have nogle spawn position som mine characters (både fjender og frendlies) spawner på.
- Mine characters skal have nogle stats (Liv, mana, navn, maxliv)
- spawning processen skal automatiseres, så fjenderne eller player character ikke behøves hardcodes in i min battle scene.
- Jeg skal kunne starte en battle.
- mine characters skal kunne angribe hinanden og tage skade.
- Jeg vil ikke kunne styre mine fjender, så jeg skal have lidt AI som kan bestemme hvad en fjende skal gøre og hvem den skal gøre tingene mod
- Jeg skal kæde mine commands sammen med noget UI så jeg kan klikke på og udstede kommandoer i en battle.
- Jeg skal kunne teste mit system.
Nu når jeg har oprettet mine characters, fået et baggrunds billede og opsat mine spawnpoints på min baggrund vil jeg nu gerne oprette og teste min battle launch funktion for at se om jeg kan spawne mine character og om de spawner på de rigtige positioner.
Til dette laver jeg først en ny Scene denne skal illustrere at man starter kampen fra en anden scene fx; min world scene, eller en dungeon. Test scenen (i dette tilfælde kaldt World) består kun af en knap/button som skal agere trigger og starte kampen.
Jeg laver 2 scripts den ene BattleLauncher.cs skal være min primære BattleLauncher i mit spil den anden fil kalder jeg BattleLauncherDemo.cs og denne er mest tiltænkt testing purposes, da jeg i demo scriptet Serializer player og enemies så jeg nemt kan bestemme og sætte de individuelle character prefabs på bestemte pladser i min battle, uden at jeg nødvendigvis behøves populate en scene med prefabs.
Jeg laver også mit battle canvas/BattleUI så mine knapper til actions bliver gjort klar til når jeg implementere min battle controller.
Jeg vil også gerne teste mine spells derfor opretter jeg også et Spell.cs så jeg kan caste et spell.
bemærk her at jeg i sidste post gennem min BattleCharacter.cs (som PartyMember.cs og Enemy.cs nedarver fra) har et field "spells" af typen Lists<Spell> som gør at jeg kan bestemme hvor mange spells mine characters skal have til rådighed samt hvilke spells der er tale om.
I BattleCharacter implementere jeg også 3 metoder: Hurt() (character skal tage skade), Defend() (Character kan reducere skade), CastSpell() (tjek om characteren har mana nok til spellet, og hvis det er true så cast spell.
For at kunne bruge min test til noget bruger jeg unity's Debug.Log(""); til at skrive hvad der sker (fx x spell was cast on), Bemærk at for denne test er det ikke relevant om mine enemies kan gøre noget da jeg udelukkene tester:
- Spawner charactersne på de rigtige pladser (er der en fejl i rect toolsne?) - Der var her en lille fejl idet jeg ikke havde sat alle spawn punkterne til x,y,z = 0,0,0, inden jeg gjorde dem til child objects, løst ved at manipulere spawn positionsnes rect tool.
- Kan mit spell finde en target position og flyve hen til denne? - Ja. target.transform.position leder efter characteren på spawnpositionen, blev i starten bange for om Spell ville være ofset lige som spawn positions.
- Virker partiklerne som de skal (spawner de og flyver derhen de skal ie hen på en character, og forsvinder de igen?) - først fejl, dernæst flyttet til det rigtige sorting layer. ændrede også fart for particles fordi jeg syntes mine spells fløj for hurtigt.
- Sorting layers (spawner characters bag ved baggrunden?) - Characters spawner som de skal.
- Kan mine characters tage skade? - Ja, Hurt(), da battlecontrolleren ikke er implementeret endnu så kan jeg ikke bekræfte om Defend() virker, men jeg kan i mit scene view se at mine characters Defence Power stiger, lige som at debug.log i consolen skriver "Def increased".
- Kan mine character dø? - Ja en dæmon når ned på 0 i hp og dør, Debug.Log outputter også den rigtige format.
