BoatCoop/scripts/player.gd
2025-03-01 22:07:11 +01:00

49 lines
1.5 KiB
GDScript

extends CharacterBody2D
const SPEED = 300.0
@export var boat: Node2D
const TILE_SIZE = 128
var relative_position_on_boat = Vector2(0, 0)
var is_on_boat = true
var last_boat_rotation = 0.0
func _ready():
if boat:
relative_position_on_boat = position - boat.position
last_boat_rotation = boat.rotation
func _physics_process(_delta):
# On tourne le joueur vers la souris
var mouse_position = get_global_mouse_position()
look_at(mouse_position)
if is_on_boat:
if boat:
# On calcule la difference de rotation du bateau depuis le dernier mouvement
var delta_rotation = boat.rotation - last_boat_rotation
# On adape la position du joueur en fonction de la nouvelle rota
relative_position_on_boat = relative_position_on_boat.rotated(delta_rotation)
position = boat.position + relative_position_on_boat
# On autorise le joueur à se déplacer dans le bateau
velocity.x = Input.get_axis("ui_left", "ui_right") * SPEED
velocity.y = Input.get_axis("ui_up", "ui_down") * SPEED
move_and_slide()
# Mise à jour des paramètres pour le déplacement du joueur en fonction du bateau
relative_position_on_boat = position - boat.position
last_boat_rotation = boat.rotation
else:
# Quand on est pas sur le bateau, on se déplace librement (le lapin surtout)
velocity.x = Input.get_axis("ui_left", "ui_right") * SPEED/2
velocity.y = Input.get_axis("ui_up", "ui_down") * SPEED/2
move_and_slide()
func set_on_boat(on_boat: bool):
#TODO
is_on_boat = on_boat