X-Git-Url: http://git.purplebirdman.com/star-foxy.git/blobdiff_plain/aa5570c71a74c44b300ec57dab7d4a4c07b98f72..HEAD:/player/player.gd diff --git a/player/player.gd b/player/player.gd index 0dbb6d9..018f669 100644 --- a/player/player.gd +++ b/player/player.gd @@ -1,36 +1,70 @@ extends KinematicBody -const SPEED = 20 +const SPEED_FORWARD = 20 +const SPEED_MAX = 20 +const SPEED_TURN = 120 +const SPEED_AIM = PI / 2 +var bullet_alterating = 0 var velocity = Vector3() +var scene_bullet = preload("res://player/bullet.tscn") # Called when the node enters the scene tree for the first time. func _ready(): pass # Replace with function body. func get_player_input(delta): - var cam_vec_lateral = $Camera.transform.basis.x - var cam_vec_vertical = $Camera.transform.basis.y + var vec_lateral = transform.basis.x + var vec_vertical = transform.basis.y if Input.is_action_pressed("player_left"): - velocity += SPEED * cam_vec_lateral * delta + velocity += SPEED_TURN * -vec_lateral * delta elif Input.is_action_pressed("player_right"): - velocity += SPEED * -cam_vec_lateral * delta + velocity += SPEED_TURN * vec_lateral * delta if Input.is_action_pressed("player_up"): - velocity += SPEED * cam_vec_vertical * delta + velocity += SPEED_TURN * vec_vertical * delta elif Input.is_action_pressed("player_down"): - velocity += SPEED * -cam_vec_vertical * delta + velocity += SPEED_TURN * -vec_vertical * delta + + if Input.is_action_pressed("player_aim_up"): + rotate_object_local(Vector3.RIGHT, SPEED_AIM * delta) + elif Input.is_action_pressed("player_aim_down"): + rotate_object_local(Vector3.RIGHT, -SPEED_AIM * delta) + if Input.is_action_pressed("player_aim_left"): + rotate(Vector3.UP, SPEED_AIM * delta) + elif Input.is_action_pressed("player_aim_right"): + rotate(Vector3.UP, -SPEED_AIM * delta) -func _process(delta): - # move foward according to the camera's POV - var cam_vec_forward = $Camera.transform.basis.z - velocity += SPEED * -cam_vec_forward * delta + # offense + if Input.is_action_pressed("player_fire"): + if $bullet_timer.time_left == 0: + fire_bullet() + +func fire_bullet(): + var bullet = scene_bullet.instance() + $"..".add_child(bullet) + + bullet_alterating = (bullet_alterating + 1) % 2 + bullet.translation = translation - transform.basis.x * (4 * bullet_alterating - 2) + bullet.rotation = rotation + bullet.direction = -transform.basis.z + $bullet_timer.start() + +func _process(delta): # get velocity changes player asks for get_player_input(delta) + # move foward according to the camera's POV + var vec_forward = transform.basis.z + velocity += SPEED_FORWARD * -vec_forward * delta + + # air friction + var friction = SPEED_MAX / velocity.length() + velocity *= friction + func _physics_process(_delta): velocity = move_and_slide(velocity, Vector3.UP)