1234567891011121314151617181920212223242526272829303132333435363738 |
- class_name Ship
- extends RigidBody2D
- # Common base script for ships
- signal moved(speed: float)
- signal thrusted(power: float)
- const THRUST_STRENGTH: float = 400_000.0
- const TORQUE_THRUST: float = 20.0
- const MOVE_CEIL : float = 2.0
- const THRUST_CEIL : float = 2.0
- var current_force := Vector2.ZERO
- var current_torque : float = 0.0
- func _physics_process(delta):
- apply_central_force(current_force.rotated(rotation))
- apply_torque(current_torque)
- _vec_ceil_emit(linear_velocity, MOVE_CEIL, moved)
- _vec_ceil_emit(current_force, THRUST_CEIL, thrusted)
- func _vec_ceil_emit(vec: Vector2, ceil: float, sig: Signal) -> void:
- var length_square: float = vec.length_squared()
- if length_square > ceil:
- sig.emit(sqrt(length_square))
- else:
- sig.emit(0.0)
- func _on_command(dir: Vector2) -> void:
- _thrust(dir)
- func _thrust(dir: Vector2) -> void:
- current_force = Vector2.UP * dir.y * THRUST_STRENGTH
- current_torque = dir.x * TORQUE_THRUST * THRUST_STRENGTH
|