From a0b7af4227664a5d3898ed3bdc9baf9a85a85eeb Mon Sep 17 00:00:00 2001 From: Clifton Palmer Date: Sun, 14 Nov 2021 12:36:13 -0600 Subject: [PATCH] Added some stupid control --- player/player.gd | 39 +++++++++++++++++++++++++++------------ player/player.tscn | 4 +++- project.godot | 20 ++++++++++++++++++++ 3 files changed, 50 insertions(+), 13 deletions(-) diff --git a/player/player.gd b/player/player.gd index 0dbb6d9..53bd3ed 100644 --- a/player/player.gd +++ b/player/player.gd @@ -1,6 +1,9 @@ extends KinematicBody -const SPEED = 20 +const SPEED_FORWARD = 5 +const SPEED_TURN = 60 +const SPEED_AIM = PI / 4 +const FRICTION = 0.99 var velocity = Vector3() @@ -9,28 +12,40 @@ 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_x(SPEED_AIM * delta) + elif Input.is_action_pressed("player_aim_down"): + rotate_x(-SPEED_AIM * delta) + if Input.is_action_pressed("player_aim_left"): + rotate_y(SPEED_AIM * delta) + elif Input.is_action_pressed("player_aim_right"): + rotate_y(-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 +func _process(delta): # get velocity changes player asks for get_player_input(delta) + velocity.x *= FRICTION + velocity.y *= FRICTION -func _physics_process(_delta): + # move foward according to the camera's POV + var vec_forward = transform.basis.z + velocity += SPEED_FORWARD * -vec_forward * delta + +func _physics_process(delta): velocity = move_and_slide(velocity, Vector3.UP) diff --git a/player/player.tscn b/player/player.tscn index 7ef0343..7dc0f4c 100644 --- a/player/player.tscn +++ b/player/player.tscn @@ -77,5 +77,7 @@ material/0 = null transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.371765, -0.470031 ) shape = SubResource( 5 ) -[node name="Camera" type="Camera" parent="."] +[node name="camera_pivot" type="Spatial" parent="."] + +[node name="Camera" type="Camera" parent="camera_pivot"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 13.3084 ) diff --git a/project.godot b/project.godot index 9fb6ae2..291ec92 100644 --- a/project.godot +++ b/project.godot @@ -46,6 +46,26 @@ player_fire={ "events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":7,"pressure":0.0,"pressed":false,"script":null) ] } +player_aim_up={ +"deadzone": 0.5, +"events": [ Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":3,"axis_value":-1.0,"script":null) + ] +} +player_aim_down={ +"deadzone": 0.5, +"events": [ Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":3,"axis_value":1.0,"script":null) + ] +} +player_aim_left={ +"deadzone": 0.5, +"events": [ Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":2,"axis_value":-1.0,"script":null) + ] +} +player_aim_right={ +"deadzone": 0.5, +"events": [ Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":2,"axis_value":1.0,"script":null) + ] +} [physics] -- 2.47.2