Add better controls
This commit is contained in:
parent
a71b9445b7
commit
416b90236d
@ -38,7 +38,7 @@ directional_shadow_normal_bias = 0.493
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0 )
|
||||
|
||||
[node name="Camera" type="Camera" parent="CameraOffset"]
|
||||
transform = Transform( -1, -6.18172e-08, 6.18172e-08, 0, 0.707107, 0.707107, -8.74228e-08, 0.707107, -0.707107, 0, 20, -15 )
|
||||
transform = Transform( 1, 1.50729e-14, -1.50729e-14, 0, 0.707107, 0.707107, 2.13163e-14, -0.707107, 0.707107, 0, 20, 15 )
|
||||
|
||||
[node name="UI" type="CanvasLayer" parent="."]
|
||||
script = ExtResource( 4 )
|
||||
|
20
Player.gd
20
Player.gd
@ -3,12 +3,28 @@ extends KinematicBody
|
||||
const MAX_ANGULAR_VELOCITY = deg2rad(135.0) # rad/s
|
||||
const MAX_VELOCITY = 600.0 # m/s
|
||||
|
||||
func _physics_process(delta):
|
||||
export var camera_relative_controls: bool = false
|
||||
|
||||
func process_player_relative_controls(delta: float):
|
||||
rotate_y(Input.get_axis("right", "left") * MAX_ANGULAR_VELOCITY * delta)
|
||||
var movement_input = Vector3(0.0, 0.0, Input.get_axis("down", "up"))
|
||||
var movement_input = Vector3(0.0, 0.0, Input.get_axis("up", "down"))
|
||||
move_and_slide(transform.basis.xform(movement_input) * MAX_VELOCITY * delta)
|
||||
update_audio(movement_input.length_squared() > 0.1)
|
||||
|
||||
func process_camera_relative_controls(delta: float):
|
||||
var screen_input = Vector3(Input.get_axis("left", "right"), Input.get_axis("down", "up"), 0.0)
|
||||
var world_input = get_viewport().get_camera().global_transform.basis.xform(screen_input)
|
||||
var movement_input = world_input - world_input.project(global_transform.basis.y)
|
||||
look_at(global_transform.origin + movement_input, Vector3(0.0, 1.0, 0.0))
|
||||
move_and_slide(movement_input.normalized() * MAX_VELOCITY * delta)
|
||||
update_audio(movement_input.length_squared() > 0.1)
|
||||
|
||||
func _physics_process(delta):
|
||||
if camera_relative_controls:
|
||||
process_camera_relative_controls(delta)
|
||||
else:
|
||||
process_player_relative_controls(delta)
|
||||
|
||||
func update_audio(is_moving: bool):
|
||||
if is_moving != $AudioStreamPlayer.playing:
|
||||
$AudioStreamPlayer.playing = is_moving
|
||||
|
Loading…
x
Reference in New Issue
Block a user