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 )
|
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0 )
|
||||||
|
|
||||||
[node name="Camera" type="Camera" parent="CameraOffset"]
|
[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="."]
|
[node name="UI" type="CanvasLayer" parent="."]
|
||||||
script = ExtResource( 4 )
|
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_ANGULAR_VELOCITY = deg2rad(135.0) # rad/s
|
||||||
const MAX_VELOCITY = 600.0 # m/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)
|
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)
|
move_and_slide(transform.basis.xform(movement_input) * MAX_VELOCITY * delta)
|
||||||
update_audio(movement_input.length_squared() > 0.1)
|
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):
|
func update_audio(is_moving: bool):
|
||||||
if is_moving != $AudioStreamPlayer.playing:
|
if is_moving != $AudioStreamPlayer.playing:
|
||||||
$AudioStreamPlayer.playing = is_moving
|
$AudioStreamPlayer.playing = is_moving
|
||||||
|
1
UI.gd
1
UI.gd
@ -2,3 +2,4 @@ extends CanvasLayer
|
|||||||
|
|
||||||
func _on_FollowRotation_toggled(button_pressed: bool):
|
func _on_FollowRotation_toggled(button_pressed: bool):
|
||||||
$"%Player/RemoteTransform".update_rotation = button_pressed
|
$"%Player/RemoteTransform".update_rotation = button_pressed
|
||||||
|
$"%Player".camera_relative_controls = !button_pressed
|
||||||
|
Loading…
x
Reference in New Issue
Block a user