Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 1eb8086

Browse files
committedSep 18, 2024
split player controller into 4 versions, save level to file, remove unused file
1 parent c446b19 commit 1eb8086

20 files changed

+659
-568
lines changed
 

‎game.gd

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
extends Node
2+
3+
4+
func _input(event: InputEvent) -> void:
5+
if event.is_action_pressed("toggle_fullscreen"):
6+
get_viewport().mode = (
7+
Window.MODE_FULLSCREEN if
8+
get_viewport().mode != Window.MODE_FULLSCREEN else
9+
Window.MODE_WINDOWED
10+
)

‎game.tscn

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
[gd_scene load_steps=16 format=3 uid="uid://bvt4747kc5u2t"]
2+
3+
[ext_resource type="Script" path="res://game.gd" id="1_1il7v"]
4+
[ext_resource type="PackedScene" uid="uid://b1ot6gn6tms6h" path="res://player/player_3d_extras.tscn" id="1_w0p8v"]
5+
[ext_resource type="Shader" uid="uid://cdlt3ujrpad32" path="res://level/sky_with_stars.tres" id="2_vppo7"]
6+
[ext_resource type="PackedScene" uid="uid://cnedxfn2pxh2t" path="res://level/level.tscn" id="7_2frud"]
7+
[ext_resource type="Texture2D" uid="uid://ca3jtautvrj1u" path="res://level/moon.png" id="12_ri1bf"]
8+
[ext_resource type="PackedScene" uid="uid://bij84ol81kcts" path="res://level/interactable/kill_plane/kill_plane_3d.tscn" id="18_psymw"]
9+
[ext_resource type="PackedScene" uid="uid://bxg6oejpaitdt" path="res://level/interactable/flag/flag_reached_screen.tscn" id="19_cpgj4"]
10+
11+
[sub_resource type="Curve" id="Curve_vfy0b"]
12+
_data = [Vector2(0.331719, 0.0391753), 0.0, 0.0, 0, 0, Vector2(0.697336, 1), 0.51276, 0.0, 0, 0]
13+
point_count = 2
14+
15+
[sub_resource type="CurveTexture" id="CurveTexture_moxc7"]
16+
curve = SubResource("Curve_vfy0b")
17+
18+
[sub_resource type="Gradient" id="Gradient_1s0jq"]
19+
offsets = PackedFloat32Array(0.784123, 1)
20+
colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 1)
21+
22+
[sub_resource type="FastNoiseLite" id="FastNoiseLite_d1ecl"]
23+
frequency = 0.3589
24+
fractal_octaves = 4
25+
cellular_distance_function = 2
26+
27+
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_83fre"]
28+
width = 1024
29+
height = 1024
30+
generate_mipmaps = false
31+
seamless = true
32+
color_ramp = SubResource("Gradient_1s0jq")
33+
noise = SubResource("FastNoiseLite_d1ecl")
34+
35+
[sub_resource type="ShaderMaterial" id="ShaderMaterial_r6vx4"]
36+
shader = ExtResource("2_vppo7")
37+
shader_parameter/top_color = Color(0.288469, 0.182916, 1, 1)
38+
shader_parameter/bottom_color = Color(1, 0.46805, 0, 1)
39+
shader_parameter/moon_direction = Vector3(-1.095, 0.68, 1)
40+
shader_parameter/moon_size = 0.045
41+
shader_parameter/gradient_curve = SubResource("CurveTexture_moxc7")
42+
shader_parameter/noise_texture = SubResource("NoiseTexture2D_83fre")
43+
shader_parameter/moon_texture = ExtResource("12_ri1bf")
44+
45+
[sub_resource type="Sky" id="Sky_0h0bb"]
46+
sky_material = SubResource("ShaderMaterial_r6vx4")
47+
48+
[sub_resource type="Environment" id="Environment_mm38n"]
49+
background_mode = 2
50+
sky = SubResource("Sky_0h0bb")
51+
ambient_light_source = 3
52+
ambient_light_color = Color(0.74902, 0.742654, 0.615273, 1)
53+
ambient_light_sky_contribution = 0.0
54+
tonemap_mode = 2
55+
tonemap_exposure = 1.05
56+
tonemap_white = 0.95
57+
ssao_enabled = true
58+
ssao_radius = 2.0
59+
ssao_intensity = 1.4
60+
glow_intensity = 4.98
61+
glow_strength = 0.26
62+
glow_bloom = 0.08
63+
glow_blend_mode = 0
64+
glow_hdr_threshold = 0.26
65+
glow_hdr_scale = 0.0
66+
glow_hdr_luminance_cap = 18.75
67+
glow_map_strength = 1.0
68+
fog_light_color = Color(0.843137, 0.737255, 0.329412, 1)
69+
fog_density = 0.0
70+
fog_aerial_perspective = 1.0
71+
fog_sky_affect = 0.0
72+
fog_height_density = 0.1
73+
volumetric_fog_density = 0.01
74+
volumetric_fog_albedo = Color(0.843137, 0.737255, 0.329412, 1)
75+
volumetric_fog_emission = Color(0.843137, 0.737255, 0.329412, 1)
76+
77+
[node name="Game" type="Node"]
78+
script = ExtResource("1_1il7v")
79+
80+
[node name="Player3D" parent="." instance=ExtResource("1_w0p8v")]
81+
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.43638, 0, -39.2513)
82+
83+
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
84+
environment = SubResource("Environment_mm38n")
85+
86+
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
87+
transform = Transform3D(0.226294, 0.780723, -0.582463, 0.688764, 0.294578, 0.662441, 0.688764, -0.551086, -0.471072, 0, 16.8832, -11.3427)
88+
light_energy = 0.53
89+
shadow_enabled = true
90+
directional_shadow_max_distance = 40.0
91+
92+
[node name="KillPlane" parent="." instance=ExtResource("18_psymw")]
93+
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -5.22359, 0)
94+
metadata/_edit_lock_ = true
95+
96+
[node name="FlagReachedScreen" parent="." instance=ExtResource("19_cpgj4")]
97+
98+
[node name="Level" parent="." instance=ExtResource("7_2frud")]
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
extends CharacterBody3D
2+
3+
@export_group("Camera")
4+
@export_range(0.0, 1.0) var mouse_sensitivity := 0.25
5+
@export var tilt_upper_limit := PI / 3.0
6+
@export var tilt_lower_limit := -PI / 8.0
7+
8+
var _camera_input_direction := Vector2.ZERO
9+
10+
@onready var _camera_pivot: Node3D = %CameraPivot
11+
@onready var _camera: Camera3D = %Camera3D
12+
13+
func _input(event: InputEvent) -> void:
14+
if event.is_action_pressed("toggle_fullscreen"):
15+
get_viewport().mode = Window.MODE_FULLSCREEN
16+
elif event.is_action_pressed("ui_cancel"):
17+
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
18+
elif event.is_action_pressed("left_click"):
19+
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
20+
21+
func _unhandled_input(event: InputEvent) -> void:
22+
var is_camera_motion := (
23+
event is InputEventMouseMotion and
24+
Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED
25+
)
26+
if is_camera_motion:
27+
_camera_input_direction = event.screen_relative * mouse_sensitivity
28+
29+
func _physics_process(delta: float) -> void:
30+
_camera_pivot.rotation.x += _camera_input_direction.y * delta
31+
_camera_pivot.rotation.x = clamp(_camera_pivot.rotation.x, tilt_lower_limit, tilt_upper_limit)
32+
_camera_pivot.rotation.y -= _camera_input_direction.x * delta
33+
34+
_camera_input_direction = Vector2.ZERO
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
[gd_scene load_steps=5 format=3 uid="uid://dajcr60pwdgpr"]
2+
3+
[ext_resource type="Script" path="res://lesson_reference/player_3d_010_camera.gd" id="1_gt3lk"]
4+
[ext_resource type="PackedScene" uid="uid://prh35jb6tjtd" path="res://player/sophia_skin/sophia_skin.tscn" id="2_xofsp"]
5+
6+
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_8x2xm"]
7+
8+
[sub_resource type="SphereShape3D" id="SphereShape3D_frgbp"]
9+
10+
[node name="Player3DCamera" type="CharacterBody3D"]
11+
axis_lock_angular_x = true
12+
axis_lock_angular_y = true
13+
axis_lock_angular_z = true
14+
floor_constant_speed = true
15+
script = ExtResource("1_gt3lk")
16+
17+
[node name="CharacterCollisionShape" type="CollisionShape3D" parent="."]
18+
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
19+
shape = SubResource("CapsuleShape3D_8x2xm")
20+
21+
[node name="SophiaSkin" parent="." instance=ExtResource("2_xofsp")]
22+
23+
[node name="CameraPivot" type="Node3D" parent="."]
24+
unique_name_in_owner = true
25+
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.09401, 0)
26+
27+
[node name="SpringArm3D" type="SpringArm3D" parent="CameraPivot"]
28+
transform = Transform3D(-1, 2.1052e-08, -1.40279e-07, -3.23484e-08, 0.929023, 0.370022, 1.38112e-07, 0.370022, -0.929023, 0, 0.33984, 0)
29+
shape = SubResource("SphereShape3D_frgbp")
30+
spring_length = 8.0
31+
margin = 0.1
32+
33+
[node name="Camera3D" type="Camera3D" parent="CameraPivot/SpringArm3D"]
34+
unique_name_in_owner = true
35+
transform = Transform3D(1, 3.19744e-14, 2.13163e-14, 0, 1, 0, 0, 0, 1, -2.4869e-14, 2.38419e-07, 10)
36+
current = true
37+
fov = 50.0
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
extends CharacterBody3D
2+
3+
@export_group("Movement")
4+
@export var move_speed := 8.0
5+
@export var acceleration := 20.0
6+
7+
@export_group("Camera")
8+
@export_range(0.0, 1.0) var mouse_sensitivity := 0.25
9+
@export var tilt_upper_limit := PI / 3.0
10+
@export var tilt_lower_limit := -PI / 8.0
11+
12+
var _camera_input_direction := Vector2.ZERO
13+
14+
@onready var _camera_pivot: Node3D = %CameraPivot
15+
@onready var _camera: Camera3D = %Camera3D
16+
17+
func _input(event: InputEvent) -> void:
18+
if event.is_action_pressed("toggle_fullscreen"):
19+
get_viewport().mode = Window.MODE_FULLSCREEN
20+
elif event.is_action_pressed("ui_cancel"):
21+
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
22+
elif event.is_action_pressed("left_click"):
23+
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
24+
25+
func _unhandled_input(event: InputEvent) -> void:
26+
var is_camera_motion := (
27+
event is InputEventMouseMotion and
28+
Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED
29+
)
30+
if is_camera_motion:
31+
_camera_input_direction = event.screen_relative * mouse_sensitivity
32+
33+
func _physics_process(delta: float) -> void:
34+
_camera_pivot.rotation.x += _camera_input_direction.y * delta
35+
_camera_pivot.rotation.x = clamp(_camera_pivot.rotation.x, tilt_lower_limit, tilt_upper_limit)
36+
_camera_pivot.rotation.y -= _camera_input_direction.x * delta
37+
38+
_camera_input_direction = Vector2.ZERO
39+
40+
var raw_input := Input.get_vector("move_left", "move_right", "move_up", "move_down")
41+
var forward := _camera.global_basis.z
42+
var right := _camera.global_basis.x
43+
var move_direction := forward * raw_input.y + right * raw_input.x
44+
move_direction.y = 0.0
45+
move_direction = move_direction.normalized()
46+
47+
velocity = velocity.move_toward(move_direction * move_speed, acceleration * delta)
48+
move_and_slide()
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
[gd_scene load_steps=5 format=3 uid="uid://1r7y5wu2j2n1"]
2+
3+
[ext_resource type="Script" path="res://lesson_reference/player_3d_020_ground_movement.gd" id="1_m1f6h"]
4+
[ext_resource type="PackedScene" uid="uid://prh35jb6tjtd" path="res://player/sophia_skin/sophia_skin.tscn" id="2_fi37v"]
5+
6+
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_8x2xm"]
7+
8+
[sub_resource type="SphereShape3D" id="SphereShape3D_v2dr6"]
9+
10+
[node name="Player3DGroundMovement" type="CharacterBody3D"]
11+
axis_lock_angular_x = true
12+
axis_lock_angular_y = true
13+
axis_lock_angular_z = true
14+
floor_constant_speed = true
15+
script = ExtResource("1_m1f6h")
16+
acceleration = 30.0
17+
18+
[node name="CharacterCollisionShape" type="CollisionShape3D" parent="."]
19+
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
20+
shape = SubResource("CapsuleShape3D_8x2xm")
21+
22+
[node name="SophiaSkin" parent="." instance=ExtResource("2_fi37v")]
23+
unique_name_in_owner = true
24+
25+
[node name="CameraPivot" type="Node3D" parent="."]
26+
unique_name_in_owner = true
27+
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.09401, 0)
28+
29+
[node name="SpringArm3D" type="SpringArm3D" parent="CameraPivot"]
30+
transform = Transform3D(-1, 2.1052e-08, -1.40279e-07, -3.23484e-08, 0.929023, 0.370022, 1.38112e-07, 0.370022, -0.929023, 0, 0.33984, 0)
31+
shape = SubResource("SphereShape3D_v2dr6")
32+
spring_length = 8.0
33+
34+
[node name="Camera3D" type="Camera3D" parent="CameraPivot/SpringArm3D"]
35+
unique_name_in_owner = true
36+
transform = Transform3D(1, 3.19744e-14, 2.13163e-14, 0, 1, 0, 0, 0, 1, -2.4869e-14, 2.38419e-07, 10)
37+
current = true
38+
fov = 50.0
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
extends CharacterBody3D
2+
3+
@export_group("Movement")
4+
@export var move_speed := 8.0
5+
@export var acceleration := 20.0
6+
@export var rotation_speed := 12.0
7+
@export var stopping_speed := 1.0
8+
9+
@export_group("Camera")
10+
@export_range(0.0, 1.0) var mouse_sensitivity := 0.25
11+
@export var tilt_upper_limit := PI / 3.0
12+
@export var tilt_lower_limit := -PI / 8.0
13+
14+
var _camera_input_direction := Vector2.ZERO
15+
var _last_movement_direction := Vector3.BACK
16+
17+
@onready var _camera_pivot: Node3D = %CameraPivot
18+
@onready var _camera: Camera3D = %Camera3D
19+
@onready var _skin: SophiaSkin = %SophiaSkin
20+
21+
func _input(event: InputEvent) -> void:
22+
if event.is_action_pressed("toggle_fullscreen"):
23+
get_viewport().mode = Window.MODE_FULLSCREEN
24+
elif event.is_action_pressed("ui_cancel"):
25+
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
26+
elif event.is_action_pressed("left_click"):
27+
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
28+
29+
func _unhandled_input(event: InputEvent) -> void:
30+
var is_camera_motion := (
31+
event is InputEventMouseMotion and
32+
Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED
33+
)
34+
if is_camera_motion:
35+
_camera_input_direction = event.screen_relative * mouse_sensitivity
36+
37+
func _physics_process(delta: float) -> void:
38+
_camera_pivot.rotation.x += _camera_input_direction.y * delta
39+
_camera_pivot.rotation.x = clamp(_camera_pivot.rotation.x, tilt_lower_limit, tilt_upper_limit)
40+
_camera_pivot.rotation.y -= _camera_input_direction.x * delta
41+
42+
_camera_input_direction = Vector2.ZERO
43+
44+
var raw_input := Input.get_vector("move_left", "move_right", "move_up", "move_down")
45+
var forward := _camera.global_basis.z
46+
var right := _camera.global_basis.x
47+
var move_direction := forward * raw_input.y + right * raw_input.x
48+
move_direction.y = 0.0
49+
move_direction = move_direction.normalized()
50+
51+
velocity = velocity.move_toward(move_direction * move_speed, acceleration * delta)
52+
var ground_speed := velocity.length()
53+
if move_direction.is_equal_approx(Vector3.ZERO) and ground_speed < stopping_speed:
54+
velocity = Vector3.ZERO
55+
56+
move_and_slide()
57+
58+
if move_direction.length() > 0.2:
59+
_last_movement_direction = move_direction.normalized()
60+
var target_angle := Vector3.BACK.signed_angle_to(_last_movement_direction, Vector3.UP)
61+
_skin.global_rotation.y = lerp_angle(_skin.rotation.y, target_angle, rotation_speed * delta)
62+
63+
if ground_speed > 0.0:
64+
_skin.move()
65+
else:
66+
_skin.idle()
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
[gd_scene load_steps=5 format=3 uid="uid://d350cxfijnjcb"]
2+
3+
[ext_resource type="Script" path="res://lesson_reference/player_3d_030_rotate_skin.gd" id="1_pimtu"]
4+
[ext_resource type="PackedScene" uid="uid://prh35jb6tjtd" path="res://player/sophia_skin/sophia_skin.tscn" id="2_ge58n"]
5+
6+
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_8x2xm"]
7+
8+
[sub_resource type="SphereShape3D" id="SphereShape3D_qiwjh"]
9+
10+
[node name="Player3DRotateSkin" type="CharacterBody3D"]
11+
axis_lock_angular_x = true
12+
axis_lock_angular_y = true
13+
axis_lock_angular_z = true
14+
floor_constant_speed = true
15+
script = ExtResource("1_pimtu")
16+
acceleration = 30.0
17+
18+
[node name="CharacterCollisionShape" type="CollisionShape3D" parent="."]
19+
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
20+
shape = SubResource("CapsuleShape3D_8x2xm")
21+
22+
[node name="SophiaSkin" parent="." instance=ExtResource("2_ge58n")]
23+
unique_name_in_owner = true
24+
25+
[node name="CameraPivot" type="Node3D" parent="."]
26+
unique_name_in_owner = true
27+
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.09401, 0)
28+
29+
[node name="SpringArm3D" type="SpringArm3D" parent="CameraPivot"]
30+
transform = Transform3D(-1, 2.1052e-08, -1.40279e-07, -3.23484e-08, 0.929023, 0.370022, 1.38112e-07, 0.370022, -0.929023, 0, 0.33984, 0)
31+
shape = SubResource("SphereShape3D_qiwjh")
32+
spring_length = 8.0
33+
34+
[node name="Camera3D" type="Camera3D" parent="CameraPivot/SpringArm3D"]
35+
unique_name_in_owner = true
36+
transform = Transform3D(1, 3.19744e-14, 2.13163e-14, 0, 1, 0, 0, 0, 1, -2.4869e-14, 2.38419e-07, 10)
37+
current = true
38+
fov = 50.0
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
extends CharacterBody3D
2+
3+
@export_group("Movement")
4+
@export var move_speed := 8.0
5+
@export var acceleration := 20.0
6+
@export var rotation_speed := 12.0
7+
@export var stopping_speed := 1.0
8+
@export var jump_impulse := 12.0
9+
10+
@export_group("Camera")
11+
@export_range(0.0, 1.0) var mouse_sensitivity := 0.25
12+
@export var tilt_upper_limit := PI / 3.0
13+
@export var tilt_lower_limit := -PI / 8.0
14+
15+
var _gravity := -30.0
16+
var _camera_input_direction := Vector2.ZERO
17+
var _last_movement_direction := Vector3.BACK
18+
19+
@onready var _camera_pivot: Node3D = %CameraPivot
20+
@onready var _camera: Camera3D = %Camera3D
21+
@onready var _skin: SophiaSkin = %SophiaSkin
22+
23+
24+
func _input(event: InputEvent) -> void:
25+
if event.is_action_pressed("ui_cancel"):
26+
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
27+
elif event.is_action_pressed("left_click"):
28+
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
29+
30+
31+
func _unhandled_input(event: InputEvent) -> void:
32+
var is_camera_motion := (
33+
event is InputEventMouseMotion and
34+
Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED
35+
)
36+
if is_camera_motion:
37+
_camera_input_direction = event.screen_relative * mouse_sensitivity
38+
39+
40+
func _physics_process(delta: float) -> void:
41+
_camera_pivot.rotation.x += _camera_input_direction.y * delta
42+
_camera_pivot.rotation.x = clamp(_camera_pivot.rotation.x, tilt_lower_limit, tilt_upper_limit)
43+
_camera_pivot.rotation.y -= _camera_input_direction.x * delta
44+
45+
_camera_input_direction = Vector2.ZERO
46+
47+
var raw_input := Input.get_vector("move_left", "move_right", "move_up", "move_down")
48+
var forward := _camera.global_basis.z
49+
var right := _camera.global_basis.x
50+
var move_direction := forward * raw_input.y + right * raw_input.x
51+
move_direction.y = 0.0
52+
move_direction = move_direction.normalized()
53+
54+
var y_velocity := velocity.y
55+
velocity.y = 0.0
56+
velocity = velocity.move_toward(move_direction * move_speed, acceleration * delta)
57+
var ground_speed := velocity.length()
58+
if move_direction.is_equal_approx(Vector3.ZERO) and ground_speed < stopping_speed:
59+
velocity = Vector3.ZERO
60+
velocity.y = y_velocity + _gravity * delta
61+
62+
var is_starting_jump := Input.is_action_just_pressed("jump") and is_on_floor()
63+
if is_starting_jump:
64+
velocity.y += jump_impulse
65+
66+
move_and_slide()
67+
68+
if move_direction.length() > 0.2:
69+
_last_movement_direction = move_direction.normalized()
70+
var target_angle := Vector3.BACK.signed_angle_to(_last_movement_direction, Vector3.UP)
71+
_skin.global_rotation.y = lerp_angle(_skin.rotation.y, target_angle, rotation_speed * delta)
72+
73+
if is_starting_jump:
74+
_skin.jump()
75+
elif not is_on_floor() and velocity.y < 0:
76+
_skin.fall()
77+
elif is_on_floor():
78+
if ground_speed > 0.0:
79+
_skin.move()
80+
else:
81+
_skin.idle()
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
[gd_scene load_steps=5 format=3 uid="uid://ccek3hxppp08n"]
2+
3+
[ext_resource type="Script" path="res://lesson_reference/player_3d_040_gravity_and_jump.gd" id="1_8djxu"]
4+
[ext_resource type="PackedScene" uid="uid://prh35jb6tjtd" path="res://player/sophia_skin/sophia_skin.tscn" id="2_qryg7"]
5+
6+
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_8x2xm"]
7+
8+
[sub_resource type="SphereShape3D" id="SphereShape3D_qn3pt"]
9+
10+
[node name="Player3DGravityAndJump" type="CharacterBody3D"]
11+
axis_lock_angular_x = true
12+
axis_lock_angular_y = true
13+
axis_lock_angular_z = true
14+
floor_constant_speed = true
15+
script = ExtResource("1_8djxu")
16+
acceleration = 30.0
17+
18+
[node name="CharacterCollisionShape" type="CollisionShape3D" parent="."]
19+
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
20+
shape = SubResource("CapsuleShape3D_8x2xm")
21+
22+
[node name="SophiaSkin" parent="." instance=ExtResource("2_qryg7")]
23+
unique_name_in_owner = true
24+
25+
[node name="CameraPivot" type="Node3D" parent="."]
26+
unique_name_in_owner = true
27+
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.09401, 0)
28+
29+
[node name="SpringArm3D" type="SpringArm3D" parent="CameraPivot"]
30+
transform = Transform3D(-1, 2.1052e-08, -1.40279e-07, -3.23484e-08, 0.929023, 0.370022, 1.38112e-07, 0.370022, -0.929023, 0, 0.33984, 0)
31+
shape = SubResource("SphereShape3D_qn3pt")
32+
spring_length = 8.0
33+
34+
[node name="Camera3D" type="Camera3D" parent="CameraPivot/SpringArm3D"]
35+
unique_name_in_owner = true
36+
transform = Transform3D(1, 3.19744e-14, 2.13163e-14, 0, 1, 0, 0, 0, 1, -2.4869e-14, 2.38419e-07, 10)
37+
current = true
38+
fov = 50.0

‎level/game.gd

Lines changed: 0 additions & 10 deletions
This file was deleted.

‎level/game.tscn

Lines changed: 0 additions & 245 deletions
This file was deleted.

‎level/level.tscn

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
[gd_scene load_steps=9 format=3 uid="uid://cnedxfn2pxh2t"]
2+
3+
[ext_resource type="PackedScene" uid="uid://7s1esfbldf1" path="res://level/cactus/cactus_small_4.tscn" id="1_oaaa3"]
4+
[ext_resource type="PackedScene" uid="uid://dt6pe66bt6rwr" path="res://level/cactus/Cactus_Small_Clump.tscn" id="2_ba0nm"]
5+
[ext_resource type="PackedScene" uid="uid://3agu7gb3kjif" path="res://level/cactus/cactus_tall_3.tscn" id="3_b7ara"]
6+
[ext_resource type="PackedScene" uid="uid://c1d37gy1pj85v" path="res://level/cactus/cactus_tall_5.tscn" id="4_ej5ku"]
7+
[ext_resource type="PackedScene" uid="uid://c5hogid8crh2g" path="res://level/cactus/cactus_small_3.tscn" id="5_ka65c"]
8+
[ext_resource type="PackedScene" uid="uid://cip1awte2184j" path="res://level/cactus/cactus_small_2.tscn" id="6_ona4a"]
9+
[ext_resource type="Material" uid="uid://da188d7yrcfr8" path="res://level/platforms.tres" id="7_njuj4"]
10+
[ext_resource type="PackedScene" uid="uid://c6uew1wfpkt16" path="res://level/interactable/flag/flag_3d.tscn" id="8_kebk2"]
11+
12+
[node name="Level" type="Node3D"]
13+
14+
[node name="Cactus_Small_4" parent="." instance=ExtResource("1_oaaa3")]
15+
transform = Transform3D(1.97278, -0.330371, -0.0536778, 0.330812, 1.9734, 0.0124367, 0.0508846, -0.0211358, 2.00022, 3.5, 2.2809, -28)
16+
17+
[node name="Cactus_Small_Clump" parent="." instance=ExtResource("2_ba0nm")]
18+
transform = Transform3D(1.32877, 0.0653513, 0.299135, -0.0637557, 1.36203, -0.0143528, -0.299479, -7.56946e-17, 1.3303, 6.32683, 2, -30.0679)
19+
20+
[node name="Cactus_Tall_5" parent="." instance=ExtResource("3_b7ara")]
21+
transform = Transform3D(1.93396, -0.241928, -2.48772, 0.662063, 2.55211, 0.16876, 2.35812, -0.518119, 1.99287, -1.74479, -0.704929, -33.646)
22+
23+
[node name="Cactus_Tall_6" parent="." instance=ExtResource("4_ej5ku")]
24+
transform = Transform3D(3.15975, 0.63175, 0.475994, -0.576589, 3.1814, -0.394898, -0.5415, 0.298819, 3.198, -3.24599, 4.81208, -17.3563)
25+
26+
[node name="Cactus_Small_3" parent="." instance=ExtResource("5_ka65c")]
27+
transform = Transform3D(1.96401, -0.124561, -2.16532, 0.142118, 2.92229, -0.0392004, 2.16425, -0.0788595, 1.96757, -15.4438, 8.12897, -17.4614)
28+
29+
[node name="Cactus_Small_2" parent="." instance=ExtResource("6_ona4a")]
30+
transform = Transform3D(2.96971, 0.256071, -1.04621, -0.601084, 2.94019, -0.986561, 0.893765, 1.12651, 2.81273, -14.6582, 8.08741, -16.8441)
31+
32+
[node name="Cactus_Small_5" parent="." instance=ExtResource("6_ona4a")]
33+
transform = Transform3D(-2.0693, 0.241202, -1.93468, 0.670546, 2.7372, -0.375951, 1.83073, -0.729927, -2.04911, -14.48, 8.1356, -17.5484)
34+
35+
[node name="Cactus_Small_11" parent="." instance=ExtResource("6_ona4a")]
36+
transform = Transform3D(-2.0693, 0.241202, -1.93468, -0.140842, 2.7954, 0.499148, 1.94458, 0.459138, -2.02263, 6.26628, 4.19006, -20.6183)
37+
38+
[node name="CSGPolygon3D8" type="CSGPolygon3D" parent="."]
39+
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -48.25, 8, -22)
40+
use_collision = true
41+
polygon = PackedVector2Array(0, 0, 3, 2, 3, 0)
42+
depth = 4.0
43+
material = ExtResource("7_njuj4")
44+
45+
[node name="CSGBox3D8" type="CSGBox3D" parent="."]
46+
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -55.25, -4.5, -20)
47+
material_override = ExtResource("7_njuj4")
48+
use_collision = true
49+
size = Vector3(8, 29, 10)
50+
51+
[node name="CSGBox3D9" type="CSGBox3D" parent="."]
52+
transform = Transform3D(1.31134e-07, 0, -1, 0, 1, 0, 1, 0, 1.31134e-07, -45.75, -5.5, -20)
53+
material_override = ExtResource("7_njuj4")
54+
use_collision = true
55+
size = Vector3(7, 27, 11)
56+
57+
[node name="Flag3D" parent="." instance=ExtResource("8_kebk2")]
58+
transform = Transform3D(0.707107, 0, -0.707107, 0, 1, 0, 0.707107, 0, 0.707107, -55.25, 10, -20)
59+
60+
[node name="Cactus_Tall_4" parent="." instance=ExtResource("3_b7ara")]
61+
transform = Transform3D(2.61213, -0.568739, 2.70573, 0.733066, 3.73154, 0.0766514, -2.66589, 0.468831, 2.67223, -57.8124, 8.07102, -16.5215)
62+
63+
[node name="Cactus_Small_6" parent="." instance=ExtResource("5_ka65c")]
64+
transform = Transform3D(-0.835645, -0.807971, -3.00138, 0.459363, 3.04172, -0.946727, 3.0741, -0.67416, -0.6744, -58.1859, 10.1568, -24.2418)
65+
66+
[node name="Cactus_Small_10" parent="." instance=ExtResource("5_ka65c")]
67+
transform = Transform3D(-0.343258, 0.118638, -2.12375, -0.220623, 1.66642, 0.18614, 2.19645, 0.185923, -0.313194, -41.9811, 8.26512, -17.7959)
68+
69+
[node name="Cactus_Small_7" parent="." instance=ExtResource("6_ona4a")]
70+
transform = Transform3D(1.41309, -0.625184, -3.11244, -0.316167, 3.3622, -0.818895, 3.15882, 0.616194, 1.31036, -58.1225, 10.3795, -23.1583)
71+
72+
[node name="Cactus_Small_8" parent="." instance=ExtResource("6_ona4a")]
73+
transform = Transform3D(-3.02021, 0.729762, 0.355604, 0.681151, 3.02339, -0.419376, -0.441628, -0.327551, -3.07869, -57.2293, 10.276, -23.5882)
74+
75+
[node name="Cactus_Small_9" parent="." instance=ExtResource("6_ona4a")]
76+
transform = Transform3D(-2.99633, 0.231602, -1.56352, 0.381736, 3.35793, -0.234152, 1.5338, -0.383288, -2.99613, -47.7949, 8.42468, -22.8013)
77+
78+
[node name="CSGBox3D4" type="CSGBox3D" parent="."]
79+
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 1, -29)
80+
material_override = ExtResource("7_njuj4")
81+
use_collision = true
82+
size = Vector3(4, 2, 4)
83+
84+
[node name="CSGBox3D10" type="CSGBox3D" parent="."]
85+
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25, 7.5, -20)
86+
material_override = ExtResource("7_njuj4")
87+
use_collision = true
88+
size = Vector3(5, 1, 8)
89+
90+
[node name="CSGBox3D11" type="CSGBox3D" parent="."]
91+
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -34, 7.5, -20)
92+
material_override = ExtResource("7_njuj4")
93+
use_collision = true
94+
size = Vector3(5, 1, 8)
95+
96+
[node name="CSGBox3D2" type="CSGBox3D" parent="."]
97+
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, -9.5, -31)
98+
material_override = ExtResource("7_njuj4")
99+
use_collision = true
100+
size = Vector3(10, 19, 22)
101+
102+
[node name="CSGPolygon3D6" type="CSGPolygon3D" parent="."]
103+
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 3, 0, -34)
104+
use_collision = true
105+
polygon = PackedVector2Array(0, 0, 3, 2, 3, 0)
106+
depth = 4.0
107+
material = ExtResource("7_njuj4")
108+
109+
[node name="Cactus_Tall_3" parent="." instance=ExtResource("3_b7ara")]
110+
transform = Transform3D(-0.363066, -0.101082, 3.01856, -0.727051, 2.95381, 0.0114629, -2.93144, -0.720079, -0.376708, -16.8351, 6.30984, -22.6841)
111+
112+
[node name="CSGCombiner3D" type="CSGCombiner3D" parent="."]
113+
material_override = ExtResource("7_njuj4")
114+
use_collision = true
115+
116+
[node name="CSGBox3D6" type="CSGBox3D" parent="CSGCombiner3D"]
117+
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6, -6.5, -20)
118+
material_override = ExtResource("7_njuj4")
119+
use_collision = true
120+
size = Vector3(12, 25, 8)
121+
122+
[node name="CSGBox3D7" type="CSGBox3D" parent="CSGCombiner3D"]
123+
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15, -5.5, -20)
124+
material_override = ExtResource("7_njuj4")
125+
use_collision = true
126+
size = Vector3(6, 27, 8)
127+
128+
[node name="CSGPolygon3D9" type="CSGPolygon3D" parent="CSGCombiner3D"]
129+
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -9, 6, -22)
130+
use_collision = true
131+
polygon = PackedVector2Array(0, 0, 3, 2, 3, 0)
132+
depth = 4.0
133+
material = ExtResource("7_njuj4")
134+
135+
[node name="CSGCombiner" type="CSGCombiner3D" parent="."]
136+
material_override = ExtResource("7_njuj4")
137+
use_collision = true
138+
139+
[node name="CSGBox3D5" type="CSGBox3D" parent="CSGCombiner"]
140+
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5, 2, -22)
141+
material_override = ExtResource("7_njuj4")
142+
use_collision = true
143+
size = Vector3(7, 4, 4)
144+
145+
[node name="CSGPolygon3D7" type="CSGPolygon3D" parent="CSGCombiner"]
146+
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 3, 4, -24)
147+
use_collision = true
148+
polygon = PackedVector2Array(0, 0, 3, 2, 3, 0)
149+
depth = 4.0
150+
material = ExtResource("7_njuj4")

‎player/camera_controller.gd

Lines changed: 0 additions & 111 deletions
This file was deleted.

‎player/camera_controller.tscn

Lines changed: 0 additions & 37 deletions
This file was deleted.

‎player/crosshair.svg

Lines changed: 0 additions & 56 deletions
This file was deleted.

‎player/crosshair.svg.import

Lines changed: 0 additions & 37 deletions
This file was deleted.

‎player/player_3d.gd renamed to ‎player/player_3d_extras.gd

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
class_name Player3D extends CharacterBody3D
1+
extends CharacterBody3D
22

33
@export_group("Movement")
44
## Character maximum run speed on the ground in meters per second.
@@ -37,9 +37,6 @@ var _camera_input_direction := Vector2.ZERO
3737
@onready var _camera_pivot: Node3D = %CameraPivot
3838
@onready var _camera: Camera3D = %Camera3D
3939
@onready var _skin: SophiaSkin = %SophiaSkin
40-
# TODO: simplify/remove
41-
@onready var _skin_pivot: Node3D = %SkinPivot
42-
@onready var _ground_shapecast: ShapeCast3D = %GroundShapeCast
4340
@onready var _landing_sound: AudioStreamPlayer3D = %LandingSound
4441
@onready var _jump_sound: AudioStreamPlayer3D = %JumpSound
4542
@onready var _dust_particles: GPUParticles3D = %DustParticles
@@ -59,6 +56,13 @@ func _ready() -> void:
5956
)
6057

6158

59+
func _input(event: InputEvent) -> void:
60+
if event.is_action_pressed("ui_cancel"):
61+
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
62+
elif event.is_action_pressed("left_click"):
63+
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
64+
65+
6266
func _unhandled_input(event: InputEvent) -> void:
6367
var player_is_using_mouse := (
6468
event is InputEventMouseMotion and Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED
@@ -69,16 +73,6 @@ func _unhandled_input(event: InputEvent) -> void:
6973

7074

7175
func _physics_process(delta: float) -> void:
72-
# Detect the ground below the player and store its height. The camera uses this
73-
# to avoid clipping through the ground or moving up and down while the player jumps.
74-
if _ground_shapecast.get_collision_count() > 0:
75-
for collision_result in _ground_shapecast.collision_result:
76-
ground_height = max(ground_height, collision_result.point.y)
77-
else:
78-
ground_height = global_position.y + _ground_shapecast.target_position.y
79-
if global_position.y < ground_height:
80-
ground_height = global_position.y
81-
8276
# Calculate movement input and align it to the camera's direction.
8377
var raw_input := Input.get_vector("move_left", "move_right", "move_up", "move_down", 0.4)
8478
# Should be projected onto the ground plane.
@@ -94,7 +88,7 @@ func _physics_process(delta: float) -> void:
9488
if move_direction.length() > 0.2:
9589
_last_input_direction = move_direction.normalized()
9690
var target_angle := Vector3.BACK.signed_angle_to(_last_input_direction, Vector3.UP)
97-
_skin_pivot.global_rotation.y = lerp_angle(_skin_pivot.rotation.y, target_angle, rotation_speed * delta)
91+
_skin.global_rotation.y = lerp_angle(_skin.rotation.y, target_angle, rotation_speed * delta)
9892

9993
# We separate out the y velocity to only interpolate the velocity in the
10094
# ground plane, and not affect the gravity.

‎player/player_3d.tscn renamed to ‎player/player_3d_extras.tscn

Lines changed: 10 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
1-
[gd_scene load_steps=13 format=3 uid="uid://ciqrpd5675boy"]
1+
[gd_scene load_steps=12 format=3 uid="uid://b1ot6gn6tms6h"]
22

3-
[ext_resource type="Script" path="res://player/player_3d.gd" id="1_rvo1c"]
4-
[ext_resource type="PackedScene" uid="uid://prh35jb6tjtd" path="res://player/sophia_skin/sophia_skin.tscn" id="2_bjfrt"]
5-
[ext_resource type="AudioStream" uid="uid://bhoyegbjust84" path="res://player/sounds/robot_land.wav" id="4_8qkn4"]
6-
[ext_resource type="AudioStream" uid="uid://b4x0f4pgfifoo" path="res://player/sounds/robot_jump.wav" id="5_b5l5h"]
3+
[ext_resource type="Script" path="res://player/player_3d_extras.gd" id="1_dpokc"]
4+
[ext_resource type="PackedScene" uid="uid://prh35jb6tjtd" path="res://player/sophia_skin/sophia_skin.tscn" id="2_4dj54"]
5+
[ext_resource type="AudioStream" uid="uid://bhoyegbjust84" path="res://player/sounds/robot_land.wav" id="3_kbqxf"]
6+
[ext_resource type="AudioStream" uid="uid://b4x0f4pgfifoo" path="res://player/sounds/robot_jump.wav" id="4_1v0dq"]
77

88
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_8x2xm"]
99

10-
[sub_resource type="CylinderShape3D" id="CylinderShape3D_s5n07"]
11-
1210
[sub_resource type="Curve" id="Curve_3f17x"]
1311
_data = [Vector2(0, 0.742241), 0.0, 0.0, 0, 0, Vector2(0.139952, 0.986755), 0.129787, 0.129787, 0, 0, Vector2(0.631579, 1), 0.0, 0.0, 0, 0, Vector2(0.785885, 0.873668), -1.98736, -1.98736, 0, 0, Vector2(1, 0.0148119), -5.26067, 0.0, 0, 0]
1412
point_count = 5
@@ -53,29 +51,17 @@ axis_lock_angular_x = true
5351
axis_lock_angular_y = true
5452
axis_lock_angular_z = true
5553
floor_constant_speed = true
56-
script = ExtResource("1_rvo1c")
54+
script = ExtResource("1_dpokc")
5755
acceleration = 30.0
5856

5957
[node name="CharacterCollisionShape" type="CollisionShape3D" parent="."]
6058
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
6159
shape = SubResource("CapsuleShape3D_8x2xm")
6260

63-
[node name="GroundShapeCast" type="ShapeCast3D" parent="."]
64-
unique_name_in_owner = true
65-
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
66-
shape = SubResource("CylinderShape3D_s5n07")
67-
target_position = Vector3(0, -2.6, 0)
68-
margin = 0.5
69-
max_results = 1
70-
debug_shape_custom_color = Color(0.658824, 1, 0, 1)
71-
72-
[node name="SkinPivot" type="Node3D" parent="."]
73-
unique_name_in_owner = true
74-
75-
[node name="SophiaSkin" parent="SkinPivot" instance=ExtResource("2_bjfrt")]
61+
[node name="SophiaSkin" parent="." instance=ExtResource("2_4dj54")]
7662
unique_name_in_owner = true
7763

78-
[node name="DustParticles" type="GPUParticles3D" parent="SkinPivot/SophiaSkin"]
64+
[node name="DustParticles" type="GPUParticles3D" parent="SophiaSkin"]
7965
unique_name_in_owner = true
8066
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.136607, -0.190934)
8167
cast_shadow = 0
@@ -88,12 +74,12 @@ draw_pass_1 = SubResource("SphereMesh_vpbss")
8874

8975
[node name="LandingSound" type="AudioStreamPlayer3D" parent="."]
9076
unique_name_in_owner = true
91-
stream = ExtResource("4_8qkn4")
77+
stream = ExtResource("3_kbqxf")
9278
volume_db = 1.0
9379

9480
[node name="JumpSound" type="AudioStreamPlayer3D" parent="."]
9581
unique_name_in_owner = true
96-
stream = ExtResource("5_b5l5h")
82+
stream = ExtResource("4_1v0dq")
9783
volume_db = 1.0
9884

9985
[node name="CameraPivot" type="Node3D" parent="."]

‎project.godot

Lines changed: 2 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ config_version=5
1111
[application]
1212

1313
config/name="M2. Get to Know 3D (Interactive Tours)"
14-
run/main_scene="res://level/game.tscn"
14+
run/main_scene="res://game.tscn"
1515
config/features=PackedStringArray("4.3", "Mobile")
1616
config/icon="res://icon.png"
1717

@@ -24,6 +24,7 @@ Events="*res://autoload/events.gd"
2424
window/size/viewport_width=1920
2525
window/size/viewport_height=1080
2626
window/size/initial_screen=1
27+
window/stretch/mode="viewport"
2728

2829
[editor_plugins]
2930

@@ -61,38 +62,6 @@ jump={
6162
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":false,"script":null)
6263
]
6364
}
64-
camera_left={
65-
"deadzone": 0.5,
66-
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":-1.0,"script":null)
67-
]
68-
}
69-
camera_right={
70-
"deadzone": 0.5,
71-
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":1.0,"script":null)
72-
]
73-
}
74-
camera_up={
75-
"deadzone": 0.5,
76-
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":-1.0,"script":null)
77-
]
78-
}
79-
camera_down={
80-
"deadzone": 0.5,
81-
"events": [null, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":1.0,"script":null)
82-
]
83-
}
84-
attack={
85-
"deadzone": 0.5,
86-
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"double_click":false,"script":null)
87-
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":5,"axis_value":1.0,"script":null)
88-
]
89-
}
90-
aim={
91-
"deadzone": 0.5,
92-
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":2,"canceled":false,"pressed":false,"double_click":false,"script":null)
93-
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":4,"axis_value":1.0,"script":null)
94-
]
95-
}
9665
toggle_fullscreen={
9766
"deadzone": 0.5,
9867
"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":4194342,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)

0 commit comments

Comments
 (0)
Please sign in to comment.