35 lines
895 B
GDScript3
35 lines
895 B
GDScript3
|
class_name PlayerController
|
||
|
extends Controller
|
||
|
|
||
|
## The character that we're controlling.
|
||
|
var player: Player
|
||
|
|
||
|
## We need the movement component to check if we can perform certain actions.
|
||
|
var movement: MovementComponent
|
||
|
|
||
|
func _init(new_player: Player):
|
||
|
player = new_player
|
||
|
movement = player.find_child("Movement")
|
||
|
|
||
|
func _unhandled_input(event):
|
||
|
if Global.interacting_with_ui:
|
||
|
return
|
||
|
|
||
|
# Calculate the direction
|
||
|
var move := Input.get_vector("move_left", "move_right", "move_forward", "move_backward")
|
||
|
var direction := (Global.camera.transform.basis * Vector3(move.x, 0, move.y))
|
||
|
direction.y = 0
|
||
|
direction = direction.normalized()
|
||
|
|
||
|
# Notify components
|
||
|
player.set_direction(direction)
|
||
|
|
||
|
if event.is_action_pressed("jump") && movement && movement.can_jump():
|
||
|
player.jump()
|
||
|
|
||
|
if event.is_action_pressed("dash"):
|
||
|
player.dash()
|
||
|
|
||
|
if event.is_action_pressed("attack"):
|
||
|
player.attack()
|