|
@@ -1,11 +1,9 @@
|
|
|
-class_name TinyPlane
|
|
|
+class_name TinyRocket
|
|
|
extends SeatedVehicle
|
|
|
|
|
|
@export var thrust_power: float = 10000.0
|
|
|
@export var turn_to_torque: float = 2000.0
|
|
|
@export var move_to_pitch: float = 4000.0
|
|
|
-@export var wing_resistance: float = 5000.0
|
|
|
-@export var lift: float = 100.0
|
|
|
|
|
|
var target_torque: float = 0.0
|
|
|
var target_pitch: float = 0.0
|
|
@@ -30,44 +28,20 @@ func trigger_direction(dir: Vector2) -> void:
|
|
|
|
|
|
|
|
|
func _physics_process(_delta) -> void:
|
|
|
- # Command part
|
|
|
- _apply_plane_rotation()
|
|
|
- _apply_plane_thrust()
|
|
|
+ _apply_rocket_rotation()
|
|
|
+ _apply_rocket_thrust()
|
|
|
|
|
|
- # Air simulation part
|
|
|
- if is_sleeping():
|
|
|
- return
|
|
|
|
|
|
- _apply_wing_resistance()
|
|
|
- _apply_lift()
|
|
|
-
|
|
|
-
|
|
|
-func _apply_plane_rotation() -> void:
|
|
|
+func _apply_rocket_rotation() -> void:
|
|
|
var torque: Vector3 = transform.basis * Vector3(target_pitch, 0.0, target_torque)
|
|
|
apply_torque(torque)
|
|
|
|
|
|
|
|
|
-func _apply_plane_thrust() -> void:
|
|
|
+func _apply_rocket_thrust() -> void:
|
|
|
var force: Vector3 = transform.basis * target_thrust
|
|
|
apply_central_force(force)
|
|
|
|
|
|
|
|
|
-func _apply_wing_resistance() -> void:
|
|
|
- var vertical_speed = linear_velocity.dot(transform.basis * Vector3.UP)
|
|
|
- var local_wing_force = Vector3.UP * -wing_resistance * vertical_speed
|
|
|
- var wing_force = transform.basis * local_wing_force
|
|
|
- apply_central_force(wing_force)
|
|
|
-
|
|
|
-
|
|
|
-func _apply_lift() -> void:
|
|
|
- var forward_speed = linear_velocity.dot(transform.basis * Vector3.FORWARD)
|
|
|
- if forward_speed < 0.0 :
|
|
|
- forward_speed = 0.0
|
|
|
- var local_lift_force = Vector3.UP * lift * forward_speed
|
|
|
- var lift_force = transform.basis * local_lift_force
|
|
|
- apply_central_force(lift_force)
|
|
|
-
|
|
|
-
|
|
|
func _on_dir_changed(dir: Vector2) -> void:
|
|
|
trigger_direction(dir)
|
|
|
|