Files

71 lines
2.1 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 = 15
var speed: float = float(MIN_SPEED)
func do_action(
action: Globals.ControllerCommand,
delta: float,
jet: Jet
) -> void:
var change_rate: float = deg_to_rad(1) * delta
match action:
Globals.ControllerCommand.PITCH_UP:
pitch_up(change_rate, jet)
Globals.ControllerCommand.PITCH_DOWN:
pitch_down(change_rate, jet)
Globals.ControllerCommand.YAW_LEFT:
yaw_left(change_rate, jet)
Globals.ControllerCommand.YAW_RIGHT:
yaw_right(change_rate, jet)
Globals.ControllerCommand.ROLL_LEFT:
roll_left(change_rate, jet)
Globals.ControllerCommand.ROLL_RIGHT:
roll_right(change_rate, jet)
Globals.ControllerCommand.THROTTLE_UP:
throttle_up(delta)
Globals.ControllerCommand.THROTTLE_DOWN:
throttle_down(delta)
_:
pass
func pitch_up(change_rate: float, jet: Jet) -> void:
jet.rotate_object_local(Vector3.RIGHT, change_rate * MIN_SPEED)
func pitch_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) -> void:
speed = move_toward(speed, MAX_SPEED, ACCELERATION * delta)
func throttle_down(delta: float) -> void:
speed = move_toward(speed, MIN_SPEED, ACCELERATION * delta)
#func cpu_fly_at(change_rate: float, jet: Jet):
# jet.rotate_toward(...)
# NOTE: example to consider
# runner_visual.angle = rotate_toward(runner_visual.angle, direction.orthogonal().angle(), 8.0 * delta)