49 lines
1.5 KiB
GDScript
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
|