43 lines
1007 B
GDScript
43 lines
1007 B
GDScript
extends CharacterBody2D
|
|
|
|
@export var context:GUIDEMappingContext
|
|
@export var move:GUIDEAction
|
|
@export var use:GUIDEAction
|
|
|
|
@export var speed:float = 300
|
|
|
|
@onready var _detection_area:Area2D = %DetectionArea
|
|
@onready var _collision_shape:CollisionShape2D = %CollisionShape
|
|
|
|
func _ready():
|
|
use.triggered.connect(_enter_boat)
|
|
|
|
func _physics_process(_delta):
|
|
velocity = move.value_axis_2d.normalized() * speed
|
|
move_and_slide()
|
|
|
|
|
|
func _enter_boat():
|
|
var boats := _detection_area.get_overlapping_bodies()
|
|
if boats.is_empty():
|
|
return
|
|
|
|
# Disable player input while in the boat
|
|
GUIDE.disable_mapping_context(context)
|
|
|
|
# disable our own collisions while in the boat
|
|
_collision_shape.set_deferred("disabled", true)
|
|
|
|
# enter the boat
|
|
boats[0].enter(self)
|
|
boats[0].exited.connect(_boat_exited, CONNECT_ONE_SHOT)
|
|
|
|
|
|
func _boat_exited():
|
|
# re-enable our own mapping context
|
|
GUIDE.enable_mapping_context(context)
|
|
|
|
# and re-enable our collisions
|
|
_collision_shape.set_deferred("disabled", false)
|
|
|