2024-08-03 13:11:47 +02:00
|
|
|
|
|
|
|
extends VehicleBody3D
|
|
|
|
|
|
|
|
# Member variables
|
|
|
|
@export var _steer_speed = 2.5
|
|
|
|
@export var _steer_limit = .8
|
|
|
|
@export var _engine_force = 1000.0
|
|
|
|
|
|
|
|
var steer_angle = 0
|
|
|
|
var steer_target = 0
|
2024-08-07 00:12:56 +02:00
|
|
|
var view_sensitivity = 0.1
|
|
|
|
var ext_view = true
|
|
|
|
var fire_btn_down = false
|
2024-08-03 13:11:47 +02:00
|
|
|
|
|
|
|
func _process(delta):
|
|
|
|
steering = move_toward(steering, Input.get_axis("vehicle_right", "vehicle_left") * _steer_limit, delta * _steer_speed)
|
|
|
|
engine_force = Input.get_axis("vehicle_decel", "vehicle_accel") * _engine_force
|
2024-08-07 00:12:56 +02:00
|
|
|
if fire_btn_down:
|
|
|
|
$turret/autocannon.on_fire()
|
2024-08-03 13:11:47 +02:00
|
|
|
|
|
|
|
func _ready():
|
2024-08-07 00:12:56 +02:00
|
|
|
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
|
2024-08-03 13:11:47 +02:00
|
|
|
|
|
|
|
func _input(ie):
|
|
|
|
if ie is InputEventMouseMotion:
|
|
|
|
var plus_pitch = view_sensitivity * -ie.relative.y
|
|
|
|
var plus_yaw = fmod(view_sensitivity * -ie.relative.x,360)
|
2024-08-07 00:12:56 +02:00
|
|
|
var can_rot = $turret/autocannon.get_rotation()
|
2024-08-03 13:11:47 +02:00
|
|
|
can_rot.x -= deg_to_rad(plus_pitch)
|
|
|
|
var can_elev = rad_to_deg(can_rot.x)
|
2024-08-03 17:33:20 +02:00
|
|
|
if can_elev < 7 and can_elev > -30:
|
2024-08-07 00:12:56 +02:00
|
|
|
$turret/autocannon.set_rotation(can_rot)
|
2024-08-03 13:11:47 +02:00
|
|
|
$turret.rotate(Vector3(0,1,0), deg_to_rad(plus_yaw))
|
|
|
|
|
2024-08-03 17:33:20 +02:00
|
|
|
elif ie is InputEventMouseButton:
|
2024-08-07 00:12:56 +02:00
|
|
|
if ie.button_index == MOUSE_BUTTON_LEFT:
|
|
|
|
fire_btn_down = ie.is_pressed()
|
|
|
|
elif ie.button_index == MOUSE_BUTTON_RIGHT and ie.is_pressed():
|
|
|
|
if ext_view:
|
|
|
|
$turret/autocannon/cam_int.make_current()
|
|
|
|
ext_view = false
|
|
|
|
else:
|
|
|
|
$turret/autocannon/cam_ext.make_current()
|
|
|
|
ext_view = true
|
2024-08-03 13:11:47 +02:00
|
|
|
|
|
|
|
func shot_hit(obj):
|
|
|
|
print ("Own shot hit obj: " + obj.get_name())
|
2024-08-07 00:12:56 +02:00
|
|
|
|
|
|
|
|