Aranylábú barátaink végre a lábuk elé néznek, ha mennek valahova. A legegyszerűbb módszer ennek a megvalósítására, ha egyszerűen minden iránybillentyűhöz rendelünk egy animációt (ha felfelé fut a játékos, akkor részben átlátszóvá tesszük a modulate.a-val, hogy ne takarja el a labdát):
if Input.is_action_pressed("ui_right"): AnimSprite.play("run_right") elif Input.is_action_pressed("ui_left"): AnimSprite.play("run_left") elif Input.is_action_pressed("ui_down"): AnimSprite.play("run_down") elif Input.is_action_pressed("ui_up"): AnimSprite.modulate.a = .75 AnimSprite.play("run_up") else: AnimSprite.modulate.a = 1 AnimSprite.play("idle")
Ez a módszer remekül működik, ha csak egyetlen irányítható karakterünk van, de mivel itt egy egész csapatunk van, sőt még egy ellenfél csapat is, így jobban járunk, ha a játékosok irányvektorát használjuk, a következőképpen:
if velocity.length() > 50: var va = rad2deg(velocity.angle()) if va >= 315 && va <= 360 && va >= 0 && va <= 45: AnimSprite.play("run_right") elif va >= 135 && va <= 225: AnimSprite.play("run_left") elif va > 45 && va < 135 : AnimSprite.play("run_down") elif va > 225 && va < 315: AnimSprite.modulate.a = .75 AnimSprite.play("run_up") else: AnimSprite.modulate.a = 1 AnimSprite.play("idle")
Lényegében egy kört vágtunk 4 felé, és mind a 4 irány kapott egy 90°-os szeletet. A kör középpontjától jobbra mutat a 0 és onnan megyünk az óramutató járása szerint körbe (lefelé 90°, balra 180°, felfelé pedig 270°), ezért van ketté szedve a "run_right", mert közben visszatértünk a kiindulópontba.
Most már nagyjából minden készen áll az ellenfél csapatának a fogadására. Jöjjenek hát!