joeblox/gears/geep.gd
2026-01-25 17:21:15 +13:00

62 lines
1.4 KiB
GDScript

class_name Geep extends "gear.gd"
func gear_name():
return "Geep"
func continuous():
return false
func use_basis():
return idle_basis()
# multiplier of player's speed
const speed = 2
# how far the vehicle lifts the player off the ground
const lift = 2
var box = null
var driver = null
var active = false
func init_driver(player):
driver = player
if not box:
box = Vector3(driver.get_node("CollisionShape3D").shape.size)
func mount():
active = true
position = Vector3(-driver.get_node("Pivot/Container").position)
position.y += 1
driver.message(
"Press [%s] to exit the Geep"
% Util.input_action_string("gear_use"))
driver.get_node("CameraGimbal").position.y += lift
driver.get_node("Pivot/Mesh").position.y += lift
driver.get_node("CollisionShape3D").shape.size = $GearMesh/Vehicle/CollisionShape3D.shape.size
driver.protected = true
driver.suspended = true
func unmount():
active = false
position = Vector3.ZERO
driver.message("")
driver.get_node("CameraGimbal").position = Vector3.ZERO
driver.get_node("Pivot/Mesh").position = Vector3.ZERO
driver.get_node("CollisionShape3D").shape.size = box
driver.protected = false
driver.suspended = false
func on_use(player):
init_driver(player)
if active:
unmount()
else:
mount()
func on_unequip(player):
init_driver(player)
unmount()
func _physics_process(_delta):
if not active:
return
driver.move_player(0, -speed)