38 lines
1.5 KiB
GDScript3
38 lines
1.5 KiB
GDScript3
|
class_name FlightSimController
|
||
|
extends AircraftController
|
||
|
|
||
|
@export var pitch_down := &"pitch_down"
|
||
|
@export var pitch_up := &"pitch_up"
|
||
|
@export var yaw_left := &"yaw_left"
|
||
|
@export var yaw_right := &"yaw_right"
|
||
|
@export var roll_left := &"roll_left"
|
||
|
@export var roll_right := &"roll_right"
|
||
|
@export var throttle_down := &"throttle_down"
|
||
|
@export var throttle_up := &"throttle_up"
|
||
|
|
||
|
@export var pitch_speed := 1.0
|
||
|
@export var yaw_speed := 1.0
|
||
|
@export var roll_speed := 1.0
|
||
|
@export var throttle_speed := 1.0
|
||
|
|
||
|
func _physics_process(delta: float) -> void:
|
||
|
if get_multiplayer_authority() == multiplayer.get_unique_id():
|
||
|
var pitch_target := Input.get_axis(pitch_down, pitch_up)
|
||
|
var pitch_diff := pitch_target - pitch
|
||
|
pitch += signf(pitch_diff) * minf(absf(pitch_diff), pitch_speed * delta)
|
||
|
|
||
|
var yaw_target := Input.get_axis(yaw_left, yaw_right)
|
||
|
var yaw_diff := yaw_target - yaw
|
||
|
yaw += signf(yaw_diff) * minf(absf(yaw_diff), yaw_speed * delta)
|
||
|
|
||
|
var roll_target := Input.get_axis(roll_left, roll_right)
|
||
|
var roll_diff := roll_target - roll
|
||
|
roll += signf(roll_diff) * minf(absf(roll_diff), roll_speed * delta)
|
||
|
|
||
|
var throttle_target := Input.get_axis(throttle_down, throttle_up) * 0.5 + 0.5
|
||
|
if throttle_target > throttle:
|
||
|
throttle = minf(throttle_target, throttle + throttle_speed * delta)
|
||
|
elif throttle_target < throttle:
|
||
|
throttle = maxf(throttle_target, throttle - throttle_speed * delta)
|
||
|
brake = 1.0 if throttle < 0.05 else 0.0
|