Files
GrowlerFury/scripts/jet_variants/base_jet.gd
T

76 lines
1.9 KiB
GDScript

class_name BaseJet extends Node
var CONFLICT_SIDE = Globals.FACTION.NEUTRAL
var HEALTH: int = 100
var YAW_SPEED: int = 50
var ROLL_SPEED: int = 100
var MIN_SPEED: int = 200
var MAX_SPEED: int = 2000
var ACCELERATION: int = 5
func do_action(
action: String,
delta: float,
jet: Jet
) -> void:
var change_rate: float = deg_to_rad(1) * delta
match action:
"pull_up":
pull_up(change_rate, jet)
"push_down":
push_down(change_rate, jet)
"yaw_left":
yaw_left(change_rate, jet)
"yaw_right":
yaw_right(change_rate, jet)
"roll_left":
roll_left(change_rate, jet)
"roll_right":
roll_right(change_rate, jet)
"throttle_up":
throttle_up(delta, jet)
"throttle_down":
throttle_down(delta, jet)
_:
pass
func pull_up(change_rate: float, jet: Jet) -> void:
jet.rotate_object_local(Vector3.RIGHT, change_rate * MIN_SPEED)
func push_down(change_rate: float, jet: Jet) -> void:
jet.rotate_object_local(Vector3.LEFT, change_rate * MIN_SPEED)
func yaw_left(change_rate: float, jet: Jet) -> void:
jet.rotate_object_local(Vector3.UP, change_rate * YAW_SPEED)
func yaw_right(change_rate: float, jet: Jet) -> void:
jet.rotate_object_local(Vector3.DOWN, change_rate * YAW_SPEED)
func roll_left(change_rate: float, jet: Jet) -> void:
jet.rotate_object_local(Vector3.BACK, change_rate * ROLL_SPEED)
func roll_right(change_rate: float, jet: Jet) -> void:
jet.rotate_object_local(Vector3.FORWARD, change_rate * ROLL_SPEED)
func throttle_up(delta: float, jet: Jet) -> void:
jet.velocity += (jet.transform.basis.z * -(delta * ACCELERATION))
#clamp(
#jet.velocity,
#MIN_SPEED * Vector3.ONE,
#MAX_SPEED * Vector3.ONE
#)
jet.velocity = jet.velocity.limit_length(MAX_SPEED)
func throttle_down(delta: float, jet: Jet) -> void:
jet.velocity += (jet.transform.basis.z * (delta * ACCELERATION))
clamp(
jet.velocity,
MIN_SPEED * Vector3.ONE,
MAX_SPEED * Vector3.ONE
)