feat: add new npc node; add interactable group to the project; add intreactable area to the player;
This commit is contained in:
+23
-6
@@ -14,24 +14,30 @@ func _ready() -> void:
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _physics_process(delta: float) -> void:
|
||||
move_player()
|
||||
push_blocks()
|
||||
|
||||
func move_player():
|
||||
var move_vector: Vector2 = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down")
|
||||
velocity = move_vector * move_speed
|
||||
|
||||
if velocity.x > 0:
|
||||
$AnimatedSprite2D.play("move_right")
|
||||
$Area2D.position = Vector2(5, 2)
|
||||
elif velocity.x < 0:
|
||||
$AnimatedSprite2D.play("move_left")
|
||||
$Area2D.position = Vector2(-5, 2)
|
||||
elif velocity.y > 0:
|
||||
$AnimatedSprite2D.play("move_down")
|
||||
$Area2D.position = Vector2(0, 8)
|
||||
elif velocity.y < 0:
|
||||
$AnimatedSprite2D.play("move_up")
|
||||
$Area2D.position = Vector2(0, -4)
|
||||
else:
|
||||
$AnimatedSprite2D.stop()
|
||||
|
||||
# test
|
||||
# get the last collision
|
||||
# check if it's the block
|
||||
# if it is the block then push it
|
||||
|
||||
|
||||
func push_blocks():
|
||||
var collision: KinematicCollision2D = get_last_slide_collision()
|
||||
if collision:
|
||||
var collisision_node = collision.get_collider()
|
||||
@@ -40,4 +46,15 @@ func _physics_process(delta: float) -> void:
|
||||
collisision_node.apply_central_force(-collision_normal * push_strength)
|
||||
|
||||
move_and_slide()
|
||||
|
||||
|
||||
|
||||
func _on_area_2d_body_entered(body: Node2D) -> void:
|
||||
if body.is_in_group("interactable"):
|
||||
body.can_interact = true
|
||||
print("Able to intreact!")
|
||||
|
||||
|
||||
func _on_area_2d_body_exited(body: Node2D) -> void:
|
||||
if body.is_in_group("interactable"):
|
||||
body.can_interact = false
|
||||
print("Left interactable!")
|
||||
|
||||
Reference in New Issue
Block a user