diff options
| author | Xavier Del Campo Romero <xavi92@disroot.org> | 2026-11-13 23:51:27 +0100 |
|---|---|---|
| committer | Xavier Del Campo Romero <xavi92@disroot.org> | 2026-11-14 00:03:24 +0100 |
| commit | 3a6d2c7b2629b7ee6f759d9e7a4509cf4dbcd7d9 (patch) | |
| tree | 22ae66447b07bd22a0e95a1bb002e48534aff29d /zombie.gd | |
| parent | 64493452fcf9cebd67774aee32704589a949e6ef (diff) | |
| download | nj26-master.tar.gz | |
Diffstat (limited to 'zombie.gd')
| -rw-r--r-- | zombie.gd | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/zombie.gd b/zombie.gd new file mode 100644 index 0000000..aa024c9 --- /dev/null +++ b/zombie.gd @@ -0,0 +1,92 @@ +class_name Zombie extends RigidBody + +enum Dir { + none + up + down + left + right +} + +var dir = Dir.none +var lastdir +var tlast = 0 +var frame_i = 0 + +var images: Dictionary = {} + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + +func _physics_process(delta): + var updown = ((Input.get_action_strength("p1_down") + - Input.get_action_strength("p1_up")) * 2 * delta) + var rightleft = ((Input.get_action_strength("p1_right") + - Input.get_action_strength("p1_left")) * 2 * delta) + + + if rightleft: + if rightleft > 0: + dir = Dir.right + else: + dir = Dir.left + elif updown: + if updown > 0: + dir = Dir.up + else: + dir = Dir.down + else: + dir = Dir.none + + self.translate(Vector3(rightleft, 0, updown)) + +func getid() -> String: + var id = "" + + match dir: + Dir.none: + id += "n" + Dir.up: + id += "f" + Dir.down: + id += "b" + Dir.left: + id += "l" + Dir.right: + id += "r" + + id += String(frame_i) + return id + +func setimg(id: String): + var mesh = get_node("MeshInstance") + var material = mesh.get_surface_material(0).duplicate() + + material.albedo_texture = images[id] + mesh.set_surface_material(0, material) + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + tlast += delta + + if tlast > 0.15: + tlast = 0 + frame_i += 1 + + if frame_i >= 8: + frame_i = 0 + + if lastdir != dir: + tlast = 0 + frame_i = 0 + + lastdir = dir + setimg(getid()) + +func _init(): + for f in ["n", "f", "b", "l", "r"]: + for i in range(8): + var id = f + String(i) + var path = "res://zombie/" + id + ".png" + images[id] = load(path) |
