Create Player Controller (#4)

* add player scene

* add some logic to control player velocity

* add debug scene and reset main scene

* add sun and env to debug scene; fix normalization of movement

* add kenney WIP assets for debug

* fix movement further and add jump

* add mouse camera control

* add sprinting

* add crouching

* use constants for height

* try to improve crouching by checking to see if there is a collision above before un-crouching

* update README about line width

* move test cube in front of playercontroller
This commit is contained in:
Shea Frembling
2026-02-16 16:33:45 -06:00
committed by GitHub
parent 14cda06d13
commit bab7fe1697
46 changed files with 837 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
Prototype Textures 1.0
Created/distributed by Kenney (www.kenney.nl)
Creation date: 08-04-2020
------------------------------
License: (Creative Commons Zero, CC0)
http://creativecommons.org/publicdomain/zero/1.0/
This content is free to use in personal, educational and commercial projects.
Support us by crediting Kenney or www.kenney.nl (this is not mandatory)
------------------------------
Donate: http://support.kenney.nl
Request: http://request.kenney.nl
Patreon: http://patreon.com/kenney/
Follow on Twitter for updates:

Binary file not shown.

View File

@@ -0,0 +1,44 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bopr4lxuspyh0"
path.s3tc="res://.godot/imported/texture_01.svg-82f8acd72d5ac6a6b19e294058f5bd0f.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/External/kenney_prototype-textures/texture_01.svg"
dest_files=["res://.godot/imported/texture_01.svg-82f8acd72d5ac6a6b19e294058f5bd0f.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,44 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dk7mp72p1gflw"
path.s3tc="res://.godot/imported/texture_02.svg-f2a2187af9daaac79681ea580f30b44c.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/External/kenney_prototype-textures/texture_02.svg"
dest_files=["res://.godot/imported/texture_02.svg-f2a2187af9daaac79681ea580f30b44c.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d3xbjquwhykth"
path="res://.godot/imported/texture_03.svg-5fb870a9554efc5ac436065c2db7fc28.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/External/kenney_prototype-textures/texture_03.svg"
dest_files=["res://.godot/imported/texture_03.svg-5fb870a9554efc5ac436065c2db7fc28.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://blpldt5wbxhhh"
path="res://.godot/imported/texture_04.svg-feff0e50174c470cf858820b23281225.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/External/kenney_prototype-textures/texture_04.svg"
dest_files=["res://.godot/imported/texture_04.svg-feff0e50174c470cf858820b23281225.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dkcn4kju6afrf"
path="res://.godot/imported/texture_05.svg-9548d4c4f1a5d0685a74bda2190d148d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/External/kenney_prototype-textures/texture_05.svg"
dest_files=["res://.godot/imported/texture_05.svg-9548d4c4f1a5d0685a74bda2190d148d.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://hmgnkqmwqfs4"
path="res://.godot/imported/texture_06.svg-987cfc5574896e2e4d8f222c790e5b9f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/External/kenney_prototype-textures/texture_06.svg"
dest_files=["res://.godot/imported/texture_06.svg-987cfc5574896e2e4d8f222c790e5b9f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dnp6ra12itu7o"
path="res://.godot/imported/texture_07.svg-125894f3d4ab2ab69e87caa204d0ed86.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/External/kenney_prototype-textures/texture_07.svg"
dest_files=["res://.godot/imported/texture_07.svg-125894f3d4ab2ab69e87caa204d0ed86.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://domgof2sjx7qt"
path="res://.godot/imported/texture_08.svg-da494b7849979c6cd92e284fbb95bb9d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/External/kenney_prototype-textures/texture_08.svg"
dest_files=["res://.godot/imported/texture_08.svg-da494b7849979c6cd92e284fbb95bb9d.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,44 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cqtfi6pafpjk8"
path.s3tc="res://.godot/imported/texture_09.svg-64820833ebfe850b4ee61637e422d922.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/External/kenney_prototype-textures/texture_09.svg"
dest_files=["res://.godot/imported/texture_09.svg-64820833ebfe850b4ee61637e422d922.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=0
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dmtaveq2q3r1t"
path="res://.godot/imported/texture_10.svg-1ff94ec81e89f67ee4e8d6bceb4e50eb.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/External/kenney_prototype-textures/texture_10.svg"
dest_files=["res://.godot/imported/texture_10.svg-1ff94ec81e89f67ee4e8d6bceb4e50eb.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dxeiukkana1b6"
path="res://.godot/imported/texture_11.svg-9901710de004ace53953773657830b39.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/External/kenney_prototype-textures/texture_11.svg"
dest_files=["res://.godot/imported/texture_11.svg-9901710de004ace53953773657830b39.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://h7s3wkl867qd"
path="res://.godot/imported/texture_12.svg-17063bd6c7a5a34ca93e640a1a266b82.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/External/kenney_prototype-textures/texture_12.svg"
dest_files=["res://.godot/imported/texture_12.svg-17063bd6c7a5a34ca93e640a1a266b82.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://qlfu7fwg5f2o"
path="res://.godot/imported/texture_13.svg-4706e0b28991c6beec73dc57cf230b24.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Assets/External/kenney_prototype-textures/texture_13.svg"
dest_files=["res://.godot/imported/texture_13.svg-4706e0b28991c6beec73dc57cf230b24.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

Binary file not shown.

View File

@@ -0,0 +1,77 @@
extends CharacterBody3D
const JUMP_SPEED: float = 5
const MOUSE_SENSITIVITY: float = 0.002
const CROUCH_MOVE_SPEED: float = 3
const BASE_MOVE_SPEED: float = 5
const SPRINT_MOVE_SPEED: float = 8
const BASE_HEIGHT: float = 2.0
const CROUCH_HEIGHT: float = 1.0
enum MovementMode {
Crouching,
Sprinting,
Walking,
}
var current_movement := MovementMode.Walking
var gravity: float = ProjectSettings.get_setting("physics/3d/default_gravity")
var move_speed: float = BASE_MOVE_SPEED
@onready var body_collision_shape: CollisionShape3D = $BodyCollisionShape
@onready var fps_camera: Camera3D = $FPSCamera
@onready var head_collision_shape: CollisionShape3D \
= $HeadCollider/HeadCollisionShape
@onready var head_collider: Area3D = $HeadCollider
func _ready() -> void:
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
head_collision_shape.set_deferred("disabled", true)
func _process(delta: float) -> void:
if Input.is_action_just_pressed("pause"):
if Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
else:
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
func _physics_process(delta: float) -> void:
velocity.y += -gravity * delta
var input = Input.get_vector("strafe_left", "strafe_right",
"move_forward", "move_backward")
if Input.is_action_pressed("sprint") \
and current_movement != MovementMode.Crouching:
move_speed = SPRINT_MOVE_SPEED
current_movement = MovementMode.Sprinting
elif Input.is_action_pressed("crouch") \
and current_movement != MovementMode.Sprinting:
move_speed = CROUCH_MOVE_SPEED
current_movement = MovementMode.Crouching
else:
move_speed = BASE_MOVE_SPEED
current_movement = MovementMode.Walking
if current_movement == MovementMode.Crouching:
body_collision_shape.shape.height = CROUCH_HEIGHT
head_collision_shape.set_deferred("disabled", false)
elif not head_collider.has_overlapping_bodies():
body_collision_shape.shape.height = BASE_HEIGHT
head_collision_shape.set_deferred("disabled", true)
var movement_dir := transform.basis * Vector3(input.x, 0, input.y)
velocity.x = movement_dir.x * move_speed
velocity.z = movement_dir.z * move_speed
move_and_slide()
if is_on_floor() and Input.is_action_just_pressed("jump"):
velocity.y = JUMP_SPEED
func _input(event: InputEvent) -> void:
if event is InputEventMouseMotion \
and Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
rotate_y(-event.relative.x * MOUSE_SENSITIVITY)
fps_camera.rotate_x(-event.relative.y * MOUSE_SENSITIVITY)
fps_camera.rotation.x = clampf(fps_camera.rotation.x,
-deg_to_rad(70), deg_to_rad(70))

View File

@@ -0,0 +1 @@
uid://bhplq3tsshgsb

View File

@@ -0,0 +1,24 @@
[gd_scene format=3 uid="uid://diipi3w18rk4v"]
[ext_resource type="Script" uid="uid://bhplq3tsshgsb" path="res://Player/player_controller.gd" id="1_biqn8"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_biqn8"]
height = 1.0
[sub_resource type="BoxShape3D" id="BoxShape3D_biqn8"]
[node name="PlayerController" type="CharacterBody3D" unique_id=1462541278]
script = ExtResource("1_biqn8")
[node name="BodyCollisionShape" type="CollisionShape3D" parent="." unique_id=1091416129]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
shape = SubResource("CapsuleShape3D_biqn8")
[node name="FPSCamera" type="Camera3D" parent="." unique_id=872643079]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.6, 0)
[node name="HeadCollider" type="Area3D" parent="." unique_id=2069486354]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.0033772, 0)
[node name="HeadCollisionShape" type="CollisionShape3D" parent="HeadCollider" unique_id=64452340]
shape = SubResource("BoxShape3D_biqn8")

View File

@@ -66,3 +66,24 @@ Bad:
```gdscript ```gdscript
const S: 300.0 const S: 300.0
``` ```
Keep single code line length up to 80 characters long. (Notice the first vertical line
in the text editor.)
This keeps code easier to read because it isn't stretching all the way across the screen.
Good:
```gdscript
@onready var head_collision_shape: CollisionShape3D \
= $HeadCollider/HeadCollisionShape
```
Bad:
```gdscript
@onready var head_collision_shape: CollisionShape3D = $HeadCollider/HeadCollisionShape
```
Notice the `\` in the above "good" example. That tells Godot to continue the expression
on the next line.

42
Testing/debug_scene.tscn Normal file
View File

@@ -0,0 +1,42 @@
[gd_scene format=3 uid="uid://df5nweglm1ak2"]
[ext_resource type="PackedScene" uid="uid://diipi3w18rk4v" path="res://Player/player_controller.tscn" id="1_2rmyx"]
[ext_resource type="Texture2D" uid="uid://cqtfi6pafpjk8" path="res://Assets/External/kenney_prototype-textures/texture_09.svg" id="1_nrln2"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_2rmyx"]
sky_horizon_color = Color(0.66224277, 0.6717428, 0.6867428, 1)
ground_horizon_color = Color(0.66224277, 0.6717428, 0.6867428, 1)
[sub_resource type="Sky" id="Sky_nrln2"]
sky_material = SubResource("ProceduralSkyMaterial_2rmyx")
[sub_resource type="Environment" id="Environment_10oj7"]
background_mode = 2
sky = SubResource("Sky_nrln2")
tonemap_mode = 2
glow_enabled = true
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_10oj7"]
albedo_texture = ExtResource("1_nrln2")
[node name="DebugScene" type="Node" unique_id=548551898]
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=82211647]
environment = SubResource("Environment_10oj7")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=605528475]
transform = Transform3D(-0.8660254, -0.43301278, 0.25, 0, 0.49999997, 0.86602545, -0.50000006, 0.75, -0.43301266, 0, 0, 0)
shadow_enabled = true
[node name="CSGBox3D" type="CSGBox3D" parent="." unique_id=1927330093]
transform = Transform3D(23.24995, 0, 0, 0, 0.12418556, 0, 0, 0, 12.13962, 0, 0, 2.206223)
material_override = SubResource("StandardMaterial3D_10oj7")
use_collision = true
size = Vector3(1, 1, 2.2382813)
[node name="PlayerController" parent="." unique_id=1462541278 instance=ExtResource("1_2rmyx")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.06209278, 0)
[node name="CSGBox3D2" type="CSGBox3D" parent="." unique_id=1350209690]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.7963257, -2.6601963)
use_collision = true

View File

@@ -21,6 +21,54 @@ config/version="0.1.0"
config/features=PackedStringArray("4.6", "Forward Plus") config/features=PackedStringArray("4.6", "Forward Plus")
config/icon="res://icon.svg" config/icon="res://icon.svg"
[display]
window/size/viewport_width=1920
window/size/viewport_height=1080
[input]
move_forward={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
]
}
move_backward={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
]
}
strafe_left={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
]
}
strafe_right={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
]
}
jump={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
]
}
sprint={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
crouch={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194326,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
pause={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
[physics] [physics]
3d/physics_engine="Jolt Physics" 3d/physics_engine="Jolt Physics"