feat: player movement and animations
This commit is contained in:
@ -2,26 +2,54 @@ extends CharacterBody2D
|
|||||||
|
|
||||||
@export_range(10, 1000, 10, "or_greater")
|
@export_range(10, 1000, 10, "or_greater")
|
||||||
var speed = 300.0
|
var speed = 300.0
|
||||||
|
@export_range(0, 0.2, 0.001, "or_greater")
|
||||||
|
var acceleration = 0.5
|
||||||
|
|
||||||
|
@export_group("Airborne")
|
||||||
@export_range(0, 1000, 10, "or_greater")
|
@export_range(0, 1000, 10, "or_greater")
|
||||||
var jump_velocity = 400.0
|
var jump_velocity = 400.0
|
||||||
@export_range(0, 10, 0.1, "or_greater")
|
@export_range(0, 10, 0.1, "or_greater")
|
||||||
var gravity_modifier = 1
|
var gravity_modifier = 1
|
||||||
|
|
||||||
|
@onready var knight: AnimatedSprite2D = $Knight
|
||||||
|
@onready var red_hood: AnimatedSprite2D = $RedHood
|
||||||
|
|
||||||
|
var animated_sprites = []
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
animated_sprites = [
|
||||||
|
knight,
|
||||||
|
red_hood
|
||||||
|
]
|
||||||
|
|
||||||
func _physics_process(delta: float) -> void:
|
func _physics_process(delta: float) -> void:
|
||||||
# Add the gravity.
|
|
||||||
if not is_on_floor():
|
if not is_on_floor():
|
||||||
velocity += get_gravity() * delta * gravity_modifier
|
velocity += get_gravity() * delta * gravity_modifier
|
||||||
|
|
||||||
# Handle jump.
|
# Handle jump.
|
||||||
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
|
# if Input.is_action_just_pressed("ui_accept") and is_on_floor():
|
||||||
velocity.y = -jump_velocity
|
# velocity.y = -jump_velocity
|
||||||
|
|
||||||
# Get the input direction and handle the movement/deceleration.
|
var direction := Input.get_axis("move_left", "move_right")
|
||||||
# As good practice, you should replace UI actions with custom gameplay actions.
|
if direction > 0:
|
||||||
var direction := Input.get_axis("ui_left", "ui_right")
|
for sprite in animated_sprites:
|
||||||
|
sprite.flip_h = false
|
||||||
|
|
||||||
|
if direction < 0:
|
||||||
|
for sprite in animated_sprites:
|
||||||
|
sprite.flip_h = true
|
||||||
|
|
||||||
|
if velocity.x != 0:
|
||||||
|
for sprite in animated_sprites:
|
||||||
|
sprite.play("run")
|
||||||
|
else:
|
||||||
|
for sprite in animated_sprites:
|
||||||
|
sprite.play("idle")
|
||||||
|
|
||||||
if direction:
|
if direction:
|
||||||
velocity.x = direction * speed
|
var smoothed_speed = speed * smoothstep(0, 1, acceleration)
|
||||||
|
velocity.x += direction * smoothed_speed
|
||||||
|
velocity.x = clampf(velocity.x, -speed, speed)
|
||||||
else:
|
else:
|
||||||
velocity.x = move_toward(velocity.x, 0, speed)
|
velocity.x = move_toward(velocity.x, 0, speed)
|
||||||
|
|
||||||
|
@ -477,20 +477,23 @@ height = 26.0
|
|||||||
[node name="Player" type="CharacterBody2D"]
|
[node name="Player" type="CharacterBody2D"]
|
||||||
collision_layer = 3
|
collision_layer = 3
|
||||||
script = ExtResource("1_yw30f")
|
script = ExtResource("1_yw30f")
|
||||||
|
speed = 200.0
|
||||||
|
acceleration = 0.177
|
||||||
|
|
||||||
[node name="Knight" type="AnimatedSprite2D" parent="."]
|
[node name="Knight" type="AnimatedSprite2D" parent="."]
|
||||||
visible = false
|
|
||||||
position = Vector2(1, -28)
|
position = Vector2(1, -28)
|
||||||
sprite_frames = SubResource("SpriteFrames_7l6ig")
|
sprite_frames = SubResource("SpriteFrames_7l6ig")
|
||||||
animation = &"idle"
|
animation = &"idle"
|
||||||
autoplay = "idle"
|
autoplay = "idle"
|
||||||
|
|
||||||
[node name="RedHood" type="AnimatedSprite2D" parent="."]
|
[node name="RedHood" type="AnimatedSprite2D" parent="."]
|
||||||
|
visible = false
|
||||||
position = Vector2(11, -19)
|
position = Vector2(11, -19)
|
||||||
sprite_frames = SubResource("SpriteFrames_mmwog")
|
sprite_frames = SubResource("SpriteFrames_mmwog")
|
||||||
animation = &"idle"
|
animation = &"idle"
|
||||||
autoplay = "idle"
|
autoplay = "idle"
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||||
|
visible = false
|
||||||
position = Vector2(0, -13)
|
position = Vector2(0, -13)
|
||||||
shape = SubResource("CapsuleShape2D_g1dw6")
|
shape = SubResource("CapsuleShape2D_g1dw6")
|
||||||
|
@ -25,6 +25,33 @@ window/stretch/mode="viewport"
|
|||||||
|
|
||||||
project/assembly_name="ExampleProject"
|
project/assembly_name="ExampleProject"
|
||||||
|
|
||||||
|
[input]
|
||||||
|
|
||||||
|
move_right={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||||
|
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
move_left={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
|
||||||
|
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
interact={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null)
|
||||||
|
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":70,"key_label":0,"unicode":102,"location":0,"echo":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
hit={
|
||||||
|
"deadzone": 0.2,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
|
||||||
|
, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(196, 11),"global_position":Vector2(205, 50),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
[rendering]
|
[rendering]
|
||||||
|
|
||||||
textures/canvas_textures/default_texture_filter=0
|
textures/canvas_textures/default_texture_filter=0
|
||||||
|
Reference in New Issue
Block a user