diff --git a/dev-assets/doodads/boy/Makefile b/dev-assets/doodads/boy/Makefile index 39d98a8..aaa98ed 100644 --- a/dev-assets/doodads/boy/Makefile +++ b/dev-assets/doodads/boy/Makefile @@ -5,6 +5,8 @@ build: doodad convert -t "Boy" stand-right.png stand-left.png \ walk-right-1.png walk-right-2.png walk-right-3.png \ walk-left-1.png walk-left-2.png walk-left-3.png \ + idle-right-1.png idle-right-2.png idle-right-3.png \ + idle-left-1.png idle-left-2.png idle-left-3.png \ boy.doodad doodad install-script boy.js boy.doodad diff --git a/dev-assets/doodads/boy/boy.js b/dev-assets/doodads/boy/boy.js index 6b087e5..c62bf8d 100644 --- a/dev-assets/doodads/boy/boy.js +++ b/dev-assets/doodads/boy/boy.js @@ -1,8 +1,9 @@ const playerSpeed = 12; let Vx = Vy = 0, - animating = false, - animStart = animEnd = 0; + walking = false, + direction = "right", + lastDirection = direction; function main() { Self.SetMobile(true); @@ -11,6 +12,8 @@ function main() { Self.SetHitbox(0, 0, 32, 52); Self.AddAnimation("walk-left", 200, ["stand-left", "walk-left-1", "walk-left-2", "walk-left-3", "walk-left-2", "walk-left-1"]); Self.AddAnimation("walk-right", 200, ["stand-right", "walk-right-1", "walk-right-2", "walk-right-3", "walk-right-2", "walk-right-1"]); + Self.AddAnimation("idle-left", 200, ["idle-left-1", "idle-left-2", "idle-left-3", "idle-left-2"]); + Self.AddAnimation("idle-right", 200, ["idle-right-1", "idle-right-2", "idle-right-3", "idle-right-2"]); // If the player suddenly changes direction, reset the animation state to quickly switch over. let lastVelocity = Vector(0, 0); @@ -25,20 +28,35 @@ function main() { Self.StopAnimation(); } lastVelocity = curVelocity; + lastDirection = direction; + let wasWalking = walking; if (ev.Right) { - if (!Self.IsAnimating()) { - Self.PlayAnimation("walk-right", null); - } + direction = "right"; Vx = playerSpeed; + walking = true; } else if (ev.Left) { - if (!Self.IsAnimating()) { - Self.PlayAnimation("walk-left", null); - } + direction = "left"; Vx = -playerSpeed; + walking = true; } else { + // Has stopped walking! + walking = false; + stoppedWalking = true; + } + + // Should we stop animating? (changed state) + if (direction !== lastDirection || wasWalking !== walking) { Self.StopAnimation(); - animating = false; + } + + // And play what animation? + if (!Self.IsAnimating()) { + if (walking) { + Self.PlayAnimation("walk-"+direction, null); + } else { + Self.PlayAnimation("idle-"+direction, null); + } } }) } diff --git a/dev-assets/doodads/boy/idle-left-1.png b/dev-assets/doodads/boy/idle-left-1.png new file mode 100644 index 0000000..ca64929 Binary files /dev/null and b/dev-assets/doodads/boy/idle-left-1.png differ diff --git a/dev-assets/doodads/boy/idle-left-2.png b/dev-assets/doodads/boy/idle-left-2.png new file mode 100644 index 0000000..192388b Binary files /dev/null and b/dev-assets/doodads/boy/idle-left-2.png differ diff --git a/dev-assets/doodads/boy/idle-left-3.png b/dev-assets/doodads/boy/idle-left-3.png new file mode 100644 index 0000000..7c0aa43 Binary files /dev/null and b/dev-assets/doodads/boy/idle-left-3.png differ diff --git a/dev-assets/doodads/boy/idle-right-1.png b/dev-assets/doodads/boy/idle-right-1.png new file mode 100644 index 0000000..def2698 Binary files /dev/null and b/dev-assets/doodads/boy/idle-right-1.png differ diff --git a/dev-assets/doodads/boy/idle-right-2.png b/dev-assets/doodads/boy/idle-right-2.png new file mode 100644 index 0000000..ab55a73 Binary files /dev/null and b/dev-assets/doodads/boy/idle-right-2.png differ diff --git a/dev-assets/doodads/boy/idle-right-3.png b/dev-assets/doodads/boy/idle-right-3.png new file mode 100644 index 0000000..345b43f Binary files /dev/null and b/dev-assets/doodads/boy/idle-right-3.png differ