plein de trucs dont des dialogues!

et ouai! appuye sur e pour parler au npc
This commit is contained in:
Thomas
2025-03-05 21:40:07 +01:00
parent a90ebb0589
commit ab988eaaac
132 changed files with 14528 additions and 50 deletions

View File

@@ -1,39 +1,47 @@
class_name PlayerControler
extends CharacterBody2D
extends Node
@export var speed = 250 # How fast the player will move (pixels/sec).
@export var human: Human
@export var ray : ShapeCast2D
var interactable : Node2D
# intensions of the player turner into a boolean
@export var wants_to_grab = false;
@onready var animation_tree := $AnimationTree
@onready var state_machine := animation_tree.get("parameters/HumanState/playback") as AnimationNodeStateMachinePlayback
var last_facing_direction = Vector2(0,-1) # facing south
func readInputs():
wants_to_grab = Input.is_action_pressed("grab");
if state_machine.get_current_node() == "grabing":
velocity = Vector2(0,0);
func _unhandled_input(event: InputEvent) -> void:
if (
event.is_action("move_left") or
event.is_action("move_right") or
event.is_action("move_up") or
event.is_action("move_down")
):
human.velocityVector = Input.get_vector("move_left", "move_right", "move_up", "move_down")
if event.is_action_pressed("grab"):
if interactable:
human.stop_interaction()
human.wants_to_interact_with = interactable
else:
human.wants_to_grab = true
else:
velocity = Input.get_vector("move_left", "move_right", "move_up", "move_down") * speed
human.wants_to_grab = false
human.wants_to_interact_with = null
func updateFacingDirectionInAnimationTree():
animation_tree.set("parameters/HumanState/grabing/blend_position", last_facing_direction)
animation_tree.set("parameters/HumanState/idling/blend_position", last_facing_direction)
animation_tree.set("parameters/HumanState/walking/blend_position", last_facing_direction)
func _process(delta) -> void:
ray.target_position = human.last_facing_direction * 48
func _physics_process(delta):
readInputs()
if human.last_facing_direction.y > 0 :
ray.target_position = Vector2(0, 48)
(ray.shape as RectangleShape2D).size = Vector2(50, 20)
elif human.last_facing_direction.y < 0:
ray.target_position = Vector2(0, -48)
(ray.shape as RectangleShape2D).size = Vector2(50, 20)
elif human.last_facing_direction.x > 0 :
ray.target_position = Vector2(48, 0)
(ray.shape as RectangleShape2D).size = Vector2(20, 50)
else:
ray.target_position = Vector2(-48, 0)
(ray.shape as RectangleShape2D).size = Vector2(20, 50)
# move the caracter
move_and_slide()
# compute the direction the player wants to look at
if velocity:
last_facing_direction = velocity.normalized()
updateFacingDirectionInAnimationTree()
func _on_area_2d_body_entered(body: Node2D) -> void:
print(body)
interactable = null
if ray.is_colliding():
var nbCollisions = ray.get_collision_count()
for n in range(nbCollisions):
var colider = ray.get_collider(n) as Node2D
if colider != null and colider != get_parent():
interactable = colider