3 const SPEED_FORWARD = 20
6 const SPEED_AIM = PI / 2
8 var velocity = Vector3()
9 var scene_bullet = preload("res://player/bullet.tscn")
11 # Called when the node enters the scene tree for the first time.
13 pass # Replace with function body.
15 func get_player_input(delta):
16 var vec_lateral = transform.basis.x
17 var vec_vertical = transform.basis.y
20 if Input.is_action_pressed("player_left"):
21 velocity += SPEED_TURN * -vec_lateral * delta
22 elif Input.is_action_pressed("player_right"):
23 velocity += SPEED_TURN * vec_lateral * delta
25 if Input.is_action_pressed("player_up"):
26 velocity += SPEED_TURN * vec_vertical * delta
27 elif Input.is_action_pressed("player_down"):
28 velocity += SPEED_TURN * -vec_vertical * delta
30 if Input.is_action_pressed("player_aim_up"):
31 rotate_object_local(Vector3.RIGHT, SPEED_AIM * delta)
32 elif Input.is_action_pressed("player_aim_down"):
33 rotate_object_local(Vector3.RIGHT, -SPEED_AIM * delta)
35 if Input.is_action_pressed("player_aim_left"):
36 rotate(Vector3.UP, SPEED_AIM * delta)
37 elif Input.is_action_pressed("player_aim_right"):
38 rotate(Vector3.UP, -SPEED_AIM * delta)
41 if Input.is_action_pressed("player_fire"):
46 var bullet = scene_bullet.instance()
47 $"..".add_child(bullet)
48 bullet.translation = translation - transform.basis.x * 2
49 bullet.rotation = rotation
50 bullet.direction = -transform.basis.z
53 # get velocity changes player asks for
54 get_player_input(delta)
56 # move foward according to the camera's POV
57 var vec_forward = transform.basis.z
58 velocity += SPEED_FORWARD * -vec_forward * delta
61 var friction = SPEED_MAX / velocity.length()
64 func _physics_process(_delta):
65 velocity = move_and_slide(velocity, Vector3.UP)