godot-tank-test/tank-base.gd

81 lines
2.1 KiB
GDScript

extends VehicleBody
# Member variables
var shotscene = preload("res://tank-round.tscn")
const STEER_SPEED = .25
const STEER_LIMIT = .3
var steer_angle = 0
var steer_target = 0
var view_sensitivity = 0.1;
export var engine_force = 20
func _fixed_process(delta):
if (Input.is_action_pressed("ui_left")):
steer_target = -STEER_LIMIT
elif (Input.is_action_pressed("ui_right")):
steer_target = STEER_LIMIT
else:
steer_target = 0
if (Input.is_action_pressed("ui_up")):
set_engine_force(engine_force)
else:
set_engine_force(0)
if (Input.is_action_pressed("ui_down")):
#set_brake(1)
set_engine_force(-engine_force)
if (Input.is_action_pressed("driver_break")):
set_brake(1.0)
else:
set_brake(0.0)
if (steer_target < steer_angle):
steer_angle -= STEER_SPEED*delta
if (steer_target > steer_angle):
steer_angle = steer_target
elif (steer_target > steer_angle):
steer_angle += STEER_SPEED*delta
if (steer_target < steer_angle):
steer_angle = steer_target
set_steering(steer_angle)
func _enter_tree():
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED);
func _ready():
set_fixed_process(true)
set_process_input(true)
func _input(ie):
if ie.type == InputEvent.MOUSE_MOTION:
var turret = get_node("Turret")
var cannon = get_node("Turret/Cannon")
#var pitch = rad2deg(camera.get_rotation().x)
#print(cannon.get_rotation())
var plus_pitch = view_sensitivity * -ie.relative_y
var plus_yaw = fmod(view_sensitivity * ie.relative_x,360)
var can_rot = cannon.get_rotation()
can_rot.z -= deg2rad(plus_pitch)
var can_elev = rad2deg(can_rot.z)
if can_elev < 7 and can_elev > -30:
cannon.set_rotation(can_rot)
turret.rotate(Vector3(0,1,0), deg2rad(plus_yaw))
#cannon.rotate(Vector3(0,0,1), deg2rad(plus_pitch))
#print(deg2rad(plus_pitch))
#print(rad2deg(cannon.get_rotation().z))
#print(turret.get_rotation())
elif ie.type == InputEvent.MOUSE_BUTTON:
if ie.button_index == BUTTON_LEFT and ie.is_pressed():
print("LEFT CLICK")
var shot = shotscene.instance()
get_parent().add_child(shot)
#shot.set_pos(Vector3(0,0,0))
shot.set_linear_velocity(Vector3(0,0,100))