Files
Dawn-Godot/scripts/Entities/RosaController.gd
2025-05-01 19:08:20 -05:00

52 lines
1.5 KiB
GDScript

class_name RosaController extends "res://scripts/Entities/OverworldEntity.gd"
var interactRange = 0.7;
func updateOverworldLogic(delta) -> void:
# Check if interact button is pressed
if(Input.is_action_just_pressed("interact")):
var rayDirection = getDirectionVector();
# cast ray
var query = PhysicsRayQueryParameters3D.create(
position,
position + (rayDirection * interactRange)
)
query.collide_with_areas = true
query.exclude = [self]
var result = get_world_3d().direct_space_state.intersect_ray(query)
if result and result.collider:
var collider = result.collider
if(collider.has_method("interact")):
collider.interact(self)
if Input.is_action_just_pressed("pause"):
getSystems().PAUSE.playerPauseToggle();
func updateMovement(delta) -> void:
# User movement
var dir:Vector2 = Input.get_vector("left", "right", "up", "down");
if(dir.x != 0 or dir.y != 0):
velocity.x = dir.x * speed * delta;
velocity.z = dir.y * speed * delta;
# Update direction
if(dir.x >= abs(dir.y) and(
dir.y == 0 or
(dir.y > 0 and direction != Direction.SOUTH) or
(dir.y < 0 and direction != Direction.NORTH)
)):
direction = Direction.EAST;
elif (dir.x <= -abs(dir.y) and (
dir.y == 0 or
(dir.y > 0 and direction != Direction.SOUTH) or
(dir.y < 0 and direction != Direction.NORTH)
)):
direction = Direction.WEST;
elif (dir.y > 0):
direction = Direction.SOUTH;
elif (dir.y < 0):
direction = Direction.NORTH;
pass