mirror of
https://github.com/Relintai/pandemonium_demo_projects.git
synced 2025-01-06 14:59:44 +01:00
57 lines
1.4 KiB
GDScript
57 lines
1.4 KiB
GDScript
extends CharacterBody2D
|
|
|
|
const MOTION_SPEED = 160 # Pixels/second.
|
|
|
|
var last_direction = Vector2(1, 0)
|
|
|
|
var anim_directions = {
|
|
"idle": [ # list of [animation name, horizontal flip]
|
|
["side_right_idle", false],
|
|
["45front_right_idle", false],
|
|
["front_idle", false],
|
|
["45front_left_idle", false],
|
|
["side_left_idle", false],
|
|
["45back_left_idle", false],
|
|
["back_idle", false],
|
|
["45back_right_idle", false],
|
|
],
|
|
|
|
"walk": [
|
|
["side_right_walk", false],
|
|
["45front_right_walk", false],
|
|
["front_walk", false],
|
|
["45front_left_walk", false],
|
|
["side_left_walk", false],
|
|
["45back_left_walk", false],
|
|
["back_walk", false],
|
|
["45back_right_walk", false],
|
|
],
|
|
}
|
|
|
|
|
|
func _physics_process(_delta):
|
|
var motion = Vector2()
|
|
motion.x = Input.get_action_strength("move_right") - Input.get_action_strength("move_left")
|
|
motion.y = Input.get_action_strength("move_down") - Input.get_action_strength("move_up")
|
|
motion.y /= 2
|
|
motion = motion.normalized() * MOTION_SPEED
|
|
#warning-ignore:return_value_discarded
|
|
set_velocity(motion)
|
|
move_and_slide()
|
|
var dir = velocity
|
|
|
|
if dir.length() > 0:
|
|
last_direction = dir
|
|
update_animation("walk")
|
|
else:
|
|
update_animation("idle")
|
|
|
|
|
|
func update_animation(anim_set):
|
|
|
|
var angle = rad_to_deg(last_direction.angle()) + 22.5
|
|
var slice_dir = floor(angle / 45)
|
|
|
|
$Sprite2D.play(anim_directions[anim_set][slice_dir][0])
|
|
$Sprite2D.flip_h = anim_directions[anim_set][slice_dir][1]
|