Update 3D Platformer for 4.0 (#770)

This commit is contained in:
Jonathan Nicholl
2022-12-13 10:51:20 -05:00
committed by GitHub
parent 095beddcb9
commit 35f9517ea8
117 changed files with 2520 additions and 4289 deletions

View File

@@ -1,13 +1,12 @@
# Platformer 3D
3D Platformer demo using a
[`KinematicBody`](https://docs.godotengine.org/en/latest/classes/class_kinematicbody.html).
[`CharacterBody3D`](https://docs.godotengine.org/en/latest/classes/class_characterbody3d.html).
It uses similar code to the 2D platformer, but implemented in 3D.
It also features audio reverberation (it sounds echo-y).
Language: GDScript
Renderer: GLES 3
Renderer: Forward Plus
Check out this demo on the asset library: https://godotengine.org/asset-library/asset/125

View File

@@ -1,8 +1,10 @@
extends Area3D
var taken = false
func _on_coin_body_enter(body):
if not taken and body is preload("res://player/player.gd"):
get_node(^"Animation").play("take")
if not taken and body is Player:
$Animation.play(&"take")
taken = true

View File

@@ -1,59 +1,81 @@
[gd_scene load_steps=12 format=2]
[gd_scene load_steps=14 format=3 uid="uid://dfxo2jwbj4aeh"]
[ext_resource path="res://coin/coin.gd" type="Script" id=1]
[ext_resource path="res://coin/sound_coin.wav" type="AudioStream" id=2]
[ext_resource path="res://enemy/shine.png" type="Texture2D" id=3]
[ext_resource type="Script" path="res://coin/coin.gd" id="1"]
[ext_resource type="AudioStream" uid="uid://b23l5nfatq2d2" path="res://coin/sound_coin.wav" id="2"]
[ext_resource type="Material" uid="uid://dp0bangabfrg" path="res://coin/coin_material.tres" id="2_n0rbc"]
[ext_resource type="Texture2D" uid="uid://y3opjgnv67r8" path="res://particle.png" id="3"]
[sub_resource type="StandardMaterial3D" id=1]
albedo_color = Color(1, 0.837686, 0, 1)
metallic = 0.86
roughness = 0.0
emission_enabled = true
emission = Color(0.219922, 0.109961, 0, 1)
emission_energy = 1.71
emission_operator = 0
emission_on_uv2 = false
[sub_resource type="CylinderMesh" id="CylinderMesh_fpglg"]
top_radius = 0.2
bottom_radius = 0.2
height = 0.05
radial_segments = 16
rings = 1
[sub_resource type="ArrayMesh" id=2]
resource_name = "Circle"
surfaces/0 = {
"aabb": AABB(-1, -0.191052, -1, 2, 0.407182, 2.64929),
"array_data": PackedByteArray(0, 184, 29, 178, 237, 186, 0, 60, 0, 130, 0, 0, 0, 0, 29, 178, 255, 187, 0, 60, 0, 130, 0, 0, 255, 55, 29, 178, 237, 186, 0, 60, 0, 130, 0, 0, 237, 58, 29, 178, 0, 184, 0, 60, 0, 130, 0, 0, 237, 186, 29, 178, 255, 183, 0, 60, 0, 130, 0, 0, 0, 60, 29, 178, 0, 0, 0, 60, 0, 130, 0, 0, 0, 188, 29, 178, 0, 0, 0, 60, 0, 130, 0, 0, 0, 60, 29, 178, 49, 57, 0, 60, 0, 130, 0, 0, 0, 188, 29, 178, 49, 57, 0, 60, 0, 130, 0, 0, 237, 58, 29, 178, 152, 60, 0, 60, 0, 130, 0, 0, 237, 186, 29, 178, 152, 60, 0, 60, 0, 130, 0, 0, 0, 56, 29, 178, 15, 62, 0, 60, 0, 130, 0, 0, 0, 184, 29, 178, 15, 62, 0, 60, 0, 130, 0, 0, 0, 0, 29, 178, 152, 62, 0, 60, 0, 130, 0, 0, 255, 55, 234, 50, 237, 186, 0, 60, 0, 127, 0, 0, 0, 0, 234, 50, 255, 187, 0, 60, 0, 127, 0, 0, 0, 184, 234, 50, 237, 186, 0, 60, 0, 127, 0, 0, 237, 58, 234, 50, 0, 184, 0, 60, 0, 127, 0, 0, 237, 186, 234, 50, 255, 183, 0, 60, 0, 127, 0, 0, 0, 60, 234, 50, 0, 0, 0, 60, 0, 127, 0, 0, 0, 188, 234, 50, 0, 0, 0, 60, 0, 127, 0, 0, 0, 60, 234, 50, 49, 57, 0, 60, 0, 127, 0, 0, 0, 188, 234, 50, 49, 57, 0, 60, 0, 127, 0, 0, 237, 58, 234, 50, 152, 60, 0, 60, 0, 127, 0, 0, 237, 186, 234, 50, 152, 60, 0, 60, 0, 127, 0, 0, 0, 56, 234, 50, 15, 62, 0, 60, 0, 127, 0, 0, 0, 184, 234, 50, 15, 62, 0, 60, 0, 127, 0, 0, 0, 0, 234, 50, 152, 62, 0, 60, 0, 127, 0, 0, 0, 0, 29, 178, 152, 62, 0, 60, 0, 0, 126, 0, 0, 0, 234, 50, 152, 62, 0, 60, 0, 0, 126, 0, 0, 184, 234, 50, 15, 62, 0, 60, 193, 0, 109, 0, 0, 184, 29, 178, 15, 62, 0, 60, 193, 0, 109, 0, 0, 0, 29, 178, 255, 187, 0, 60, 0, 0, 129, 0, 0, 0, 234, 50, 255, 187, 0, 60, 0, 0, 129, 0, 255, 55, 234, 50, 237, 186, 0, 60, 63, 0, 147, 0, 255, 55, 29, 178, 237, 186, 0, 60, 63, 0, 147, 0, 237, 186, 234, 50, 152, 60, 0, 60, 147, 0, 63, 0, 237, 186, 29, 178, 152, 60, 0, 60, 147, 0, 63, 0, 237, 58, 234, 50, 0, 184, 0, 60, 109, 0, 193, 0, 237, 58, 29, 178, 0, 184, 0, 60, 109, 0, 193, 0, 0, 188, 234, 50, 49, 57, 0, 60, 131, 0, 16, 0, 0, 188, 29, 178, 49, 57, 0, 60, 131, 0, 16, 0, 0, 60, 234, 50, 0, 0, 0, 60, 125, 0, 240, 0, 0, 60, 29, 178, 0, 0, 0, 60, 125, 0, 240, 0, 0, 60, 29, 178, 49, 57, 0, 60, 125, 0, 16, 0, 0, 60, 234, 50, 49, 57, 0, 60, 125, 0, 16, 0, 237, 58, 234, 50, 152, 60, 0, 60, 109, 0, 63, 0, 237, 58, 29, 178, 152, 60, 0, 60, 109, 0, 63, 0, 0, 188, 29, 178, 0, 0, 0, 60, 131, 0, 240, 0, 0, 188, 234, 50, 0, 0, 0, 60, 131, 0, 240, 0, 237, 186, 234, 50, 255, 183, 0, 60, 147, 0, 193, 0, 237, 186, 29, 178, 255, 183, 0, 60, 147, 0, 193, 0, 0, 56, 234, 50, 15, 62, 0, 60, 63, 0, 109, 0, 0, 56, 29, 178, 15, 62, 0, 60, 63, 0, 109, 0, 0, 184, 234, 50, 237, 186, 0, 60, 193, 0, 147, 0, 0, 184, 29, 178, 237, 186, 0, 60, 193, 0, 147, 0),
"array_index_data": PackedByteArray(0, 0, 2, 0, 1, 0, 0, 0, 3, 0, 2, 0, 0, 0, 4, 0, 3, 0, 3, 0, 4, 0, 5, 0, 5, 0, 4, 0, 6, 0, 5, 0, 6, 0, 7, 0, 7, 0, 6, 0, 8, 0, 7, 0, 8, 0, 9, 0, 9, 0, 8, 0, 10, 0, 9, 0, 10, 0, 11, 0, 11, 0, 10, 0, 12, 0, 11, 0, 12, 0, 13, 0, 14, 0, 16, 0, 15, 0, 14, 0, 17, 0, 16, 0, 16, 0, 17, 0, 18, 0, 18, 0, 17, 0, 19, 0, 18, 0, 19, 0, 20, 0, 20, 0, 19, 0, 21, 0, 20, 0, 21, 0, 22, 0, 22, 0, 21, 0, 23, 0, 22, 0, 23, 0, 24, 0, 24, 0, 23, 0, 25, 0, 24, 0, 25, 0, 26, 0, 26, 0, 25, 0, 27, 0, 28, 0, 30, 0, 29, 0, 28, 0, 31, 0, 30, 0, 32, 0, 34, 0, 33, 0, 32, 0, 35, 0, 34, 0, 31, 0, 36, 0, 30, 0, 31, 0, 37, 0, 36, 0, 35, 0, 38, 0, 34, 0, 35, 0, 39, 0, 38, 0, 37, 0, 40, 0, 36, 0, 37, 0, 41, 0, 40, 0, 39, 0, 42, 0, 38, 0, 39, 0, 43, 0, 42, 0, 44, 0, 46, 0, 45, 0, 44, 0, 47, 0, 46, 0, 48, 0, 50, 0, 49, 0, 48, 0, 51, 0, 50, 0, 47, 0, 52, 0, 46, 0, 47, 0, 53, 0, 52, 0, 44, 0, 42, 0, 43, 0, 44, 0, 45, 0, 42, 0, 51, 0, 54, 0, 50, 0, 51, 0, 55, 0, 54, 0, 53, 0, 29, 0, 52, 0, 53, 0, 28, 0, 29, 0, 41, 0, 49, 0, 40, 0, 41, 0, 48, 0, 49, 0, 55, 0, 33, 0, 54, 0, 55, 0, 32, 0, 33, 0),
"blend_shape_data": [],
"format": 98051,
"index_count": 156,
"material": SubResource( 1 ),
"primitive": 4,
"skeleton_aabb": [],
"vertex_count": 56
}
[sub_resource type="Animation" id=3]
resource_name = "spin"
length = 2.0
loop = true
[sub_resource type="Animation" id="Animation_r4jod"]
length = 0.001
tracks/0/type = "value"
tracks/0/path = NodePath("Circle:rotation_degrees")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Circle:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(1.5708, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Circle:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
[sub_resource type="Animation" id="3"]
resource_name = "spin"
length = 2.0
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Circle:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 2),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(-90, 0, 0), Vector3(-90, 0, -360)]
"values": [Vector3(1.5708, 6.28319, 0), Vector3(1.5708, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Circle:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
[sub_resource type="Animation" id=4]
[sub_resource type="Animation" id="4"]
resource_name = "take"
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Circle:visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
@@ -61,11 +83,11 @@ tracks/0/keys = {
"values": [false]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("GPUParticles3D:emitting")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
@@ -73,11 +95,11 @@ tracks/1/keys = {
"values": [true]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sound:playing")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
@@ -85,69 +107,73 @@ tracks/2/keys = {
"values": [true]
}
[sub_resource type="SphereShape3D" id=5]
[sub_resource type="AnimationLibrary" id="AnimationLibrary_7v453"]
_data = {
"RESET": SubResource("Animation_r4jod"),
"spin": SubResource("3"),
"take": SubResource("4")
}
[sub_resource type="SphereShape3D" id="5"]
radius = 0.312546
[sub_resource type="StandardMaterial3D" id=6]
flags_transparent = true
flags_unshaded = true
[sub_resource type="StandardMaterial3D" id="6"]
transparency = 1
blend_mode = 1
shading_mode = 0
vertex_color_use_as_albedo = true
vertex_color_is_srgb = true
params_blend_mode = 1
params_billboard_mode = 3
albedo_color = Color(1, 1, 0.759137, 1)
albedo_texture = ExtResource("3")
billboard_mode = 3
particles_anim_h_frames = 1
particles_anim_v_frames = 1
particles_anim_loop = false
albedo_color = Color(1, 1, 0.759137, 1)
albedo_texture = ExtResource( 3 )
[sub_resource type="QuadMesh" id=7]
material = SubResource( 6 )
[sub_resource type="PlaneMesh" id="7"]
material = SubResource("6")
size = Vector2(0.5, 0.5)
orientation = 2
[sub_resource type="Gradient" id=8]
[sub_resource type="Gradient" id="8"]
colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0)
[node name="Coin" type="Area3D"]
input_ray_pickable = false
script = ExtResource( 1 )
__meta__ = {
"__editor_plugin_screen__": "3D"
}
script = ExtResource("1")
[node name="Circle" type="MeshInstance3D" parent="."]
transform = Transform3D(0.2, 0, 0, 0, -3.25841e-08, 0.2, 0, -0.2, -3.25841e-08, 0.00550658, 0.532125, 0.000651598)
transform = Transform3D(1, 0, 0, 0, -3.61999e-06, -1, 0, 1, -3.61999e-06, 0.00550658, 0.532125, 0.000651598)
layers = 2
mesh = SubResource( 2 )
surface_material_override/0 = null
mesh = SubResource("CylinderMesh_fpglg")
surface_material_override/0 = ExtResource("2_n0rbc")
[node name="Animation" type="AnimationPlayer" parent="."]
autoplay = "spin"
anims/spin = SubResource( 3 )
anims/take = SubResource( 4 )
libraries = {
"": SubResource("AnimationLibrary_7v453")
}
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00894194, 0.575859, 0.0193955)
shape = SubResource( 5 )
[node name="VisibleOnScreenEnabler3D" type="VisibleOnScreenEnabler3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0321827, 0.57887, 0.0268312)
aabb = AABB(-0.29109, -0.328186, -0.295852, 0.582181, 0.656373, 0.591703)
freeze_bodies = false
shape = SubResource("5")
[node name="Sound" type="AudioStreamPlayer3D" parent="."]
stream = ExtResource( 2 )
stream = ExtResource("2")
[node name="GPUParticles3D" type="CPUParticles3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.000732422, 0.542954, 0)
emitting = false
one_shot = true
explosiveness = 1.0
mesh = SubResource( 7 )
explosiveness = 0.5
lifetime_randomness = 0.2
mesh = SubResource("7")
emission_shape = 2
emission_box_extents = Vector3(0.3, 0.3, 0.3)
initial_velocity = 5.51
angular_velocity = 4.27461e-05
scale_amount = 0.1
color_ramp = SubResource( 8 )
emission_sphere_radius = 0.4
direction = Vector3(0, 1, 0)
spread = 25.0
initial_velocity_min = 1.0
initial_velocity_max = 2.0
color_ramp = SubResource("8")
[connection signal="body_entered" from="." to="." method="_on_coin_body_enter"]

View File

@@ -0,0 +1,10 @@
[gd_resource type="StandardMaterial3D" format=3 uid="uid://dp0bangabfrg"]
[resource]
albedo_color = Color(1, 0.837686, 0, 1)
metallic = 1.0
roughness = 0.2
emission_enabled = true
emission = Color(0.219922, 0.109961, 0, 1)
anisotropy_enabled = true
anisotropy = 1.0

View File

@@ -1,7 +1,8 @@
[remap]
importer="wav"
type="AudioStreamSample"
type="AudioStreamWAV"
uid="uid://b23l5nfatq2d2"
path="res://.godot/imported/sound_coin.wav-5f523c825e94d407ed9e355cbe69ab46.sample"
[deps]
@@ -17,5 +18,7 @@ force/max_rate=false
force/max_rate_hz=44100
edit/trim=true
edit/normalize=true
edit/loop=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

View File

@@ -1,41 +1,3 @@
[gd_resource type="AudioBusLayout" load_steps=4 format=2]
[sub_resource type="AudioEffectReverb" id=1]
resource_name = "Reverb"
predelay_feedback = 0.8
room_size = 0.33
damping = 0.32
hipass = 0.9
dry = 0.0
[sub_resource type="AudioEffectAmplify" id=2]
resource_name = "Amplify"
[sub_resource type="AudioEffectReverb" id=3]
resource_name = "Reverb"
predelay_feedback = 0.8
room_size = 0.89
damping = 0.17
hipass = 0.08
dry = 0.0
wet = 0.2
[gd_resource type="AudioBusLayout" format=3 uid="uid://ctpvhrx4pwr86"]
[resource]
bus/1/name = "Reverb Small"
bus/1/solo = false
bus/1/mute = false
bus/1/bypass_fx = false
bus/1/volume_db = 0.0
bus/1/send = "Master"
bus/1/effect/0/effect = SubResource( 1 )
bus/1/effect/0/enabled = true
bus/1/effect/1/effect = SubResource( 2 )
bus/1/effect/1/enabled = true
bus/2/name = "Reverb Large"
bus/2/solo = false
bus/2/mute = false
bus/2/bypass_fx = false
bus/2/volume_db = 0.0
bus/2/send = "Master"
bus/2/effect/0/effect = SubResource( 3 )
bus/2/effect/0/enabled = true

View File

@@ -1,13 +1,22 @@
[gd_resource type="Environment" load_steps=3 format=2]
[gd_resource type="Environment" load_steps=4 format=3 uid="uid://odyhne6bhlsu"]
[ext_resource path="res://stage/panorama.png" type="Texture2D" id=1]
[ext_resource type="Texture2D" uid="uid://qdur4kpvvtdg" path="res://stage/panorama.png" id="1"]
[sub_resource type="PanoramaSkyMaterial" id=1]
radiance_size = 1
panorama = ExtResource( 1 )
[sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_3qare"]
panorama = ExtResource("1")
[sub_resource type="Sky" id="Sky_qdkmq"]
sky_material = SubResource("PanoramaSkyMaterial_3qare")
[resource]
background_mode = 2
background_sky = SubResource( 1 )
sky = SubResource("Sky_qdkmq")
ambient_light_source = 2
ambient_light_color = Color(0.6, 0.6, 0.6, 1)
ambient_light_sky_contribution = 0.0
tonemap_mode = 2
tonemap_white = 6.0
ssao_enabled = true
glow_enabled = true
glow_intensity = 0.5
glow_strength = 1.2
glow_blend_mode = 1

View File

@@ -1,74 +1,82 @@
extends RigidDynamicBody3D
extends RigidBody3D
const ACCEL = 5.0
const DEACCEL = 20.0
const MAX_SPEED = 2.0
const ROT_SPEED = 1.0
var prev_advance = false
var dying = false
var prev_advance := false
var dying := false
var rot_dir = 4
@onready var gravity = ProjectSettings.get_setting("physics/3d/default_gravity") * ProjectSettings.get_setting("physics/3d/default_gravity_vector")
@onready var gravity = ProjectSettings.get_setting("physics/3d/default_gravity") \
* ProjectSettings.get_setting("physics/3d/default_gravity_vector")
@onready var _animation_player := $Enemy/AnimationPlayer as AnimationPlayer
@onready var _ray_floor := $Enemy/Skeleton/RayFloor as RayCast3D
@onready var _ray_wall := $Enemy/Skeleton/RayWall as RayCast3D
func _integrate_forces(state):
var delta = state.get_step()
var lv = state.get_linear_velocity()
var g = state.get_total_gravity()
func _integrate_forces(state: PhysicsDirectBodyState3D):
var delta := state.get_step()
var lin_velocity := state.get_linear_velocity()
var grav := state.get_total_gravity()
# get_total_gravity returns zero for the first few frames, leading to errors.
if g == Vector3.ZERO:
g = gravity
if grav.is_zero_approx():
grav = self.gravity
lv += g * delta # Apply gravity.
var up = -g.normalized()
lin_velocity += grav * delta # Apply gravity.
var up := -grav.normalized()
if dying:
state.set_linear_velocity(lv)
state.set_linear_velocity(lin_velocity)
return
for i in range(state.get_contact_count()):
var cc = state.get_contact_collider_object(i)
var dp = state.get_contact_local_normal(i)
for i in state.get_contact_count():
var contact_collider := state.get_contact_collider_object(i)
var contact_normal := state.get_contact_local_normal(i)
if cc:
if cc is preload("res://player/bullet/bullet.gd") and cc.enabled:
set_mode(MODE_RIGID)
if is_instance_valid(contact_collider):
if contact_collider is Bullet and contact_collider.enabled:
dying = true
state.set_angular_velocity(-dp.cross(up).normalized() * 33.0)
get_node(^"AnimationPlayer").play("impact")
get_node(^"AnimationPlayer").queue("explode")
cc.enabled = false
get_node(^"SoundHit").play()
axis_lock_angular_x = false
axis_lock_angular_y = false
axis_lock_angular_z = false
collision_layer = 0
state.set_angular_velocity(-contact_normal.cross(up).normalized() * 33.0)
_animation_player.play(&"impact")
_animation_player.queue(&"extra/explode")
contact_collider.enabled = false
$SoundWalkLoop.stop()
$SoundHit.play()
return
var col_floor = get_node(^"Armature/RayFloor").is_colliding()
var col_wall = get_node(^"Armature/RayWall").is_colliding()
var advance := _ray_floor.is_colliding() and not _ray_wall.is_colliding()
var advance = col_floor and not col_wall
var dir = get_node(^"Armature").get_transform().basis[2].normalized()
var deaccel_dir = dir
var dir := ($Enemy/Skeleton as Node3D).get_transform().basis[2].normalized()
var deaccel_dir := dir
if advance:
if dir.dot(lv) < MAX_SPEED:
lv += dir * ACCEL * delta
deaccel_dir = dir.cross(g).normalized()
if dir.dot(lin_velocity) < MAX_SPEED:
lin_velocity += dir * ACCEL * delta
deaccel_dir = dir.cross(gravity).normalized()
else:
if prev_advance:
rot_dir = 1
dir = Basis(up, rot_dir * ROT_SPEED * (delta) * dir)
get_node(^"Armature").set_transform(Transform3D().looking_at(-dir, up))
dir = Basis(up, rot_dir * ROT_SPEED * (delta)) * dir
$Enemy/Skeleton.set_transform(Transform3D().looking_at(-dir, up))
var dspeed = deaccel_dir.dot(lv)
var dspeed := deaccel_dir.dot(lin_velocity)
dspeed -= DEACCEL * delta
if dspeed < 0:
dspeed = 0
lv = lv - deaccel_dir * deaccel_dir.dot(lv) + deaccel_dir * dspeed
lin_velocity = lin_velocity - deaccel_dir * deaccel_dir.dot(lin_velocity) \
+ deaccel_dir * dspeed
state.set_linear_velocity(lv)
state.set_linear_velocity(lin_velocity)
prev_advance = advance

Binary file not shown.

View File

@@ -0,0 +1,49 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://51yuwlr5tgi0"
path="res://.godot/imported/enemy.glb-d895c1723b6b5633e6a9ea1829adeaa2.scn"
[deps]
source_file="res://enemy/enemy.glb"
dest_files=["res://.godot/imported/enemy.glb-d895c1723b6b5633e6a9ea1829adeaa2.scn"]
[params]
nodes/root_type="Node3D"
nodes/root_name="Enemy"
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=3
meshes/lightmap_texel_size=0.2
skins/use_named_skins=true
animation/import=true
animation/fps=30
import_script/path=""
_subresources={
"animations": {
"falling": {
"settings/loop_mode": 1
},
"idle": {
"save_to_file/enabled": false,
"save_to_file/keep_custom_tracks": "",
"save_to_file/path": "",
"settings/loop_mode": 1
},
"run": {
"settings/loop_mode": 1
},
"walk": {
"save_to_file/enabled": false,
"save_to_file/keep_custom_tracks": "",
"save_to_file/path": "",
"settings/loop_mode": 1
}
}
}

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,8 @@
[remap]
importer="wav"
type="AudioStreamSample"
type="AudioStreamWAV"
uid="uid://bqpmm2b3otsvp"
path="res://.godot/imported/robot_walk.wav-e477aac8926497af29eed244f64833e8.sample"
[deps]
@@ -17,5 +18,7 @@ force/max_rate=false
force/max_rate_hz=44100
edit/trim=true
edit/normalize=true
edit/loop=true
edit/loop_mode=2
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

View File

@@ -1,38 +0,0 @@
[remap]
importer="texture"
type="StreamTexture2D"
path.s3tc="res://.godot/imported/shine.png-4170bd0cee6f5d251a3f551d4acf3e6c.s3tc.stex"
path.etc2="res://.godot/imported/shine.png-4170bd0cee6f5d251a3f551d4acf3e6c.etc2.stex"
path.etc="res://.godot/imported/shine.png-4170bd0cee6f5d251a3f551d4acf3e6c.etc.stex"
metadata={
"imported_formats": ["s3tc", "etc2", "etc"],
"vram_texture": true
}
[deps]
source_file="res://enemy/shine.png"
dest_files=["res://.godot/imported/shine.png-4170bd0cee6f5d251a3f551d4acf3e6c.s3tc.stex", "res://.godot/imported/shine.png-4170bd0cee6f5d251a3f551d4acf3e6c.etc2.stex", "res://.godot/imported/shine.png-4170bd0cee6f5d251a3f551d4acf3e6c.etc.stex"]
[params]
compress/mode=2
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=true
flags/filter=true
flags/mipmaps=true
flags/anisotropic=false
flags/srgb=1
process/fix_alpha_border=true
process/premult_alpha=true
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0

View File

@@ -1,7 +1,8 @@
[remap]
importer="wav"
type="AudioStreamSample"
type="AudioStreamWAV"
uid="uid://4d5gwju5ipd3"
path="res://.godot/imported/sound_explode.wav-38875bfce76147e228902e26b716f579.sample"
[deps]
@@ -17,5 +18,7 @@ force/max_rate=false
force/max_rate_hz=44100
edit/trim=true
edit/normalize=true
edit/loop=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

View File

@@ -1,7 +1,8 @@
[remap]
importer="wav"
type="AudioStreamSample"
type="AudioStreamWAV"
uid="uid://bb3j3700yjir8"
path="res://.godot/imported/sound_hit.wav-954732368f39d5a47e196d428c1ff53a.sample"
[deps]
@@ -17,5 +18,7 @@ force/max_rate=false
force/max_rate_hz=44100
edit/trim=true
edit/normalize=true
edit/loop=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

179
3d/platformer/game.tscn Normal file
View File

@@ -0,0 +1,179 @@
[gd_scene load_steps=9 format=3 uid="uid://d0lrpf3mmjdsx"]
[ext_resource type="PackedScene" uid="uid://dohp772jyjxb7" path="res://stage/stage.tscn" id="1_ybvw5"]
[ext_resource type="PackedScene" uid="uid://dfxo2jwbj4aeh" path="res://coin/coin.tscn" id="2_chew2"]
[ext_resource type="PackedScene" uid="uid://o5q0hy6cg6nt" path="res://enemy/enemy.tscn" id="3_nhwvs"]
[ext_resource type="PackedScene" uid="uid://cc4idhykjp5f5" path="res://player/player.tscn" id="4_ray4s"]
[sub_resource type="PhysicsMaterial" id="1"]
friction = 0.0
[sub_resource type="PhysicsMaterial" id="2"]
friction = 0.0
[sub_resource type="PhysicsMaterial" id="3"]
friction = 0.0
[sub_resource type="PhysicsMaterial" id="4"]
friction = 0.0
[node name="Game" type="Node3D"]
[node name="Stage" parent="." instance=ExtResource("1_ybvw5")]
[node name="Coins" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -6, -12)
[node name="Coin1" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.5311, 2.85075, 5.24675)
[node name="Coin2" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.5311, 2.85075, 7.24675)
[node name="Coin3" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20.5311, 2.85075, 5.24675)
[node name="Coin44" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20.5311, 2.85075, 7.24675)
[node name="Coin4" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.61344, 11.28, 11.0239)
[node name="Coin42" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.61344, 11.28, 13.0239)
[node name="Coin43" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.61344, 11.28, 11.0239)
[node name="Coin33" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.61344, 11.28, 13.0239)
[node name="Coin5" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.61344, 12.9027, 11.03)
[node name="Coin41" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.61344, 12.9027, 13.03)
[node name="Coin34" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.61344, 12.9027, 13.03)
[node name="Coin40" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.61344, 12.9027, 11.03)
[node name="Coin6" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.61344, 11.28, 15.0922)
[node name="Coin39" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.61344, 11.28, 17.0922)
[node name="Coin35" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.61344, 11.28, 17.0922)
[node name="Coin38" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.61344, 11.28, 15.0922)
[node name="Coin37" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.61344, 12.9027, 15.0983)
[node name="Coin36" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.61344, 12.9027, 17.0983)
[node name="Coin32" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.61344, 12.9027, 15.0983)
[node name="Coin31" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.61344, 12.9027, 17.0983)
[node name="Coin7" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 57.057, 4.14271, 26.9338)
[node name="Coin30" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 57.057, 4.14271, 28.9338)
[node name="Coin29" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 57.057, 5.76534, 26.9399)
[node name="Coin28" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 59.057, 5.76534, 28.9399)
[node name="Coin27" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 59.057, 5.76534, 26.9399)
[node name="Coin26" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 59.057, 4.14271, 28.9338)
[node name="Coin25" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 59.057, 4.14271, 26.9338)
[node name="Coin24" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 57.057, 5.76534, 28.9399)
[node name="Coin8" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 63.0108, 6.16547, 28.8899)
[node name="Coin23" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 65.0108, 7.7881, 28.896)
[node name="Coin22" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 63.0108, 6.16547, 30.8899)
[node name="Coin21" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 63.0108, 7.7881, 28.896)
[node name="Coin20" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 65.0108, 7.7881, 30.896)
[node name="Coin19" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 65.0108, 6.16547, 28.8899)
[node name="Coin18" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 65.0108, 6.16547, 30.8899)
[node name="Coin17" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 63.0108, 7.7881, 30.896)
[node name="Coin9" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 51.5614, 2.98252, 23.1775)
[node name="Coin16" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 53.5614, 4.60515, 23.1836)
[node name="Coin15" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 51.5614, 2.98252, 25.1775)
[node name="Coin14" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 53.5614, 2.98252, 23.1775)
[node name="Coin13" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 53.5614, 4.60515, 25.1836)
[node name="Coin12" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 51.5614, 4.60515, 23.1836)
[node name="Coin11" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 53.5614, 2.98252, 25.1775)
[node name="Coin10" parent="Coins" instance=ExtResource("2_chew2")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 51.5614, 4.60515, 25.1836)
[node name="Enemies" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16, -6, -12)
[node name="Enemy1" parent="Enemies" instance=ExtResource("3_nhwvs")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.3062, 5.40827, 5.96938)
physics_material_override = SubResource("1")
[node name="Enemy2" parent="Enemies" instance=ExtResource("3_nhwvs")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 64.1292, 5.40827, 17.1396)
physics_material_override = SubResource("2")
[node name="Enemy3" parent="Enemies" instance=ExtResource("3_nhwvs")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 64.0292, 6.70827, 29.8128)
physics_material_override = SubResource("3")
[node name="Enemy4" parent="Enemies" instance=ExtResource("3_nhwvs")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 52.6702, 5.40827, 27.7128)
physics_material_override = SubResource("4")
[node name="Player" parent="." instance=ExtResource("4_ray4s")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -7.49833, -1.84189, 3.9334)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -1,8 +1,9 @@
[remap]
importer="texture"
type="StreamTexture2D"
path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
type="CompressedTexture2D"
uid="uid://dypbdx5dxnb7w"
path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"
metadata={
"vram_texture": false
}
@@ -10,26 +11,24 @@ metadata={
[deps]
source_file="res://icon.png"
dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"]
dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=true
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

Before

Width:  |  Height:  |  Size: 164 B

After

Width:  |  Height:  |  Size: 164 B

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://y3opjgnv67r8"
path="res://.godot/imported/particle.png-c2ba3d91e96c62035d672392a1197218.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://particle.png"
dest_files=["res://.godot/imported/particle.png-c2ba3d91e96c62035d672392a1197218.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=true
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

View File

@@ -0,0 +1,16 @@
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://c1lk3srtdadr6"]
[ext_resource type="Texture2D" uid="uid://y3opjgnv67r8" path="res://particle.png" id="1_ryem2"]
[resource]
transparency = 1
blend_mode = 1
cull_mode = 2
shading_mode = 0
albedo_color = Color(1, 1, 0.759137, 1)
albedo_texture = ExtResource("1_ryem2")
texture_filter = 0
billboard_mode = 3
particles_anim_h_frames = 1
particles_anim_v_frames = 1
particles_anim_loop = false

View File

@@ -1,4 +1,4 @@
extends RigidDynamicBody3D
class_name Bullet extends RigidBody3D
#warning-ignore:unused_class_variable
var enabled = true

View File

@@ -1,48 +1,37 @@
[gd_scene load_steps=8 format=2]
[gd_scene load_steps=10 format=3 uid="uid://0qwkkgqdb77r"]
[ext_resource path="res://player/bullet/bullet.gd" type="Script" id=1]
[ext_resource type="Script" path="res://player/bullet/bullet.gd" id="1"]
[sub_resource type="StandardMaterial3D" id=1]
flags_transparent = true
flags_unshaded = true
vertex_color_use_as_albedo = true
vertex_color_is_srgb = true
params_blend_mode = 1
albedo_color = Color(0.822, 0.795804, 0.513098, 1)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4xppo"]
albedo_color = Color(0.701961, 0.698039, 0.513726, 1)
roughness = 0.0
emission_enabled = true
emission = Color(1, 0.884824, 0.513098, 1)
emission_energy_multiplier = 0.5
[sub_resource type="ArrayMesh" id=2]
resource_name = "Sphere.001"
surfaces/0 = {
"aabb": AABB(-0.951057, -1, -0.951057, 1.90211, 2, 1.90211),
"array_data": PackedByteArray(155, 187, 241, 52, 0, 0, 0, 60, 135, 36, 0, 0, 179, 184, 120, 58, 0, 0, 0, 60, 176, 98, 0, 0, 166, 182, 120, 58, 166, 182, 0, 60, 200, 98, 200, 0, 97, 185, 241, 52, 97, 185, 0, 60, 171, 36, 171, 0, 155, 187, 241, 180, 0, 0, 0, 60, 135, 220, 0, 0, 97, 185, 241, 180, 97, 185, 0, 60, 171, 220, 171, 0, 179, 184, 120, 186, 0, 0, 0, 60, 176, 158, 0, 0, 166, 182, 120, 186, 166, 182, 0, 60, 200, 158, 200, 0, 0, 0, 241, 52, 155, 187, 0, 60, 0, 36, 135, 0, 0, 0, 241, 180, 155, 187, 0, 60, 0, 220, 135, 0, 0, 0, 120, 186, 179, 184, 0, 60, 0, 158, 176, 0, 0, 0, 120, 58, 179, 184, 0, 60, 0, 98, 176, 0, 97, 57, 241, 52, 97, 185, 0, 60, 85, 36, 171, 0, 97, 57, 241, 180, 97, 185, 0, 60, 85, 220, 171, 0, 166, 54, 120, 186, 166, 182, 0, 60, 56, 158, 200, 0, 166, 54, 120, 58, 166, 182, 0, 60, 56, 98, 200, 0, 155, 59, 241, 52, 0, 0, 0, 60, 121, 36, 0, 0, 155, 59, 241, 180, 0, 0, 0, 60, 121, 220, 0, 0, 179, 56, 120, 186, 0, 0, 0, 60, 80, 158, 0, 0, 179, 56, 120, 58, 0, 0, 0, 60, 80, 98, 0, 0, 97, 57, 241, 52, 97, 57, 0, 60, 85, 36, 85, 0, 97, 57, 241, 180, 97, 57, 0, 60, 85, 220, 85, 0, 166, 54, 120, 186, 166, 54, 0, 60, 56, 158, 56, 0, 166, 54, 120, 58, 166, 54, 0, 60, 56, 98, 56, 0, 0, 0, 241, 52, 155, 59, 0, 60, 0, 36, 121, 0, 0, 0, 241, 180, 155, 59, 0, 60, 0, 220, 121, 0, 0, 0, 120, 186, 179, 56, 0, 60, 0, 158, 80, 0, 0, 0, 120, 58, 179, 56, 0, 60, 0, 98, 80, 0, 97, 185, 241, 52, 97, 57, 0, 60, 171, 36, 85, 0, 97, 185, 241, 180, 97, 57, 0, 60, 171, 220, 85, 0, 166, 182, 120, 186, 166, 54, 0, 60, 200, 158, 56, 0, 166, 182, 120, 58, 166, 54, 0, 60, 200, 98, 56, 0, 0, 0, 0, 60, 0, 0, 0, 60, 0, 127, 0, 0, 0, 0, 0, 188, 0, 0, 0, 60, 0, 130, 0, 0),
"array_index_data": PackedByteArray(0, 0, 2, 0, 1, 0, 0, 0, 3, 0, 2, 0, 4, 0, 3, 0, 0, 0, 4, 0, 5, 0, 3, 0, 6, 0, 5, 0, 4, 0, 6, 0, 7, 0, 5, 0, 5, 0, 8, 0, 3, 0, 5, 0, 9, 0, 8, 0, 7, 0, 9, 0, 5, 0, 7, 0, 10, 0, 9, 0, 3, 0, 11, 0, 2, 0, 3, 0, 8, 0, 11, 0, 9, 0, 12, 0, 8, 0, 9, 0, 13, 0, 12, 0, 10, 0, 13, 0, 9, 0, 10, 0, 14, 0, 13, 0, 8, 0, 15, 0, 11, 0, 8, 0, 12, 0, 15, 0, 13, 0, 16, 0, 12, 0, 13, 0, 17, 0, 16, 0, 14, 0, 17, 0, 13, 0, 14, 0, 18, 0, 17, 0, 12, 0, 19, 0, 15, 0, 12, 0, 16, 0, 19, 0, 17, 0, 20, 0, 16, 0, 17, 0, 21, 0, 20, 0, 18, 0, 21, 0, 17, 0, 18, 0, 22, 0, 21, 0, 16, 0, 23, 0, 19, 0, 16, 0, 20, 0, 23, 0, 21, 0, 24, 0, 20, 0, 21, 0, 25, 0, 24, 0, 22, 0, 25, 0, 21, 0, 22, 0, 26, 0, 25, 0, 20, 0, 27, 0, 23, 0, 20, 0, 24, 0, 27, 0, 25, 0, 28, 0, 24, 0, 25, 0, 29, 0, 28, 0, 26, 0, 29, 0, 25, 0, 26, 0, 30, 0, 29, 0, 24, 0, 31, 0, 27, 0, 24, 0, 28, 0, 31, 0, 1, 0, 2, 0, 32, 0, 33, 0, 7, 0, 6, 0, 2, 0, 11, 0, 32, 0, 33, 0, 10, 0, 7, 0, 11, 0, 15, 0, 32, 0, 33, 0, 14, 0, 10, 0, 15, 0, 19, 0, 32, 0, 33, 0, 18, 0, 14, 0, 19, 0, 23, 0, 32, 0, 33, 0, 22, 0, 18, 0, 23, 0, 27, 0, 32, 0, 33, 0, 26, 0, 22, 0, 27, 0, 31, 0, 32, 0, 33, 0, 30, 0, 26, 0, 29, 0, 0, 0, 28, 0, 29, 0, 4, 0, 0, 0, 30, 0, 4, 0, 29, 0, 30, 0, 6, 0, 4, 0, 32, 0, 31, 0, 1, 0, 33, 0, 6, 0, 30, 0, 1, 0, 28, 0, 0, 0, 1, 0, 31, 0, 28, 0),
"blend_shape_data": [],
"format": 98051,
"index_count": 192,
"material": SubResource( 1 ),
"primitive": 4,
"skeleton_aabb": [],
"vertex_count": 34
}
[sub_resource type="SphereMesh" id="SphereMesh_syslt"]
material = SubResource("StandardMaterial3D_4xppo")
radius = 0.25
height = 0.5
radial_segments = 16
rings = 8
[sub_resource type="StandardMaterial3D" id=3]
[sub_resource type="StandardMaterial3D" id="3"]
albedo_color = Color(0.7, 0.7, 0.7, 1)
metallic = 0.1
roughness = 0.0
emission_enabled = true
emission = Color(1, 0.884824, 0.513098, 1)
emission_energy = 3.71
emission_operator = 0
emission_on_uv2 = false
emission_energy_multiplier = 3.71
[sub_resource type="Animation" id=4]
[sub_resource type="Animation" id="4"]
length = 2.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sphere:visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 1.5),
"transitions": PackedFloat32Array(1, 1),
@@ -50,11 +39,11 @@ tracks/0/keys = {
"values": [true, false]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("GPUParticles3D:emitting")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1.5),
"transitions": PackedFloat32Array(1, 1),
@@ -62,53 +51,64 @@ tracks/1/keys = {
"values": [true, false]
}
tracks/2/type = "method"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath(".")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PackedFloat32Array(2),
"transitions": PackedFloat32Array(1),
"values": [{
"args": [],
"method": "queue_free"
"method": &"queue_free"
}]
}
[sub_resource type="Gradient" id=5]
colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0)
[sub_resource type="SphereShape3D" id=6]
radius = 0.27
[node name="Bullet" type="RigidDynamicBody3D"]
mass = 0.4
script = ExtResource( 1 )
__meta__ = {
"__editor_plugin_screen__": "3D"
[sub_resource type="AnimationLibrary" id="AnimationLibrary_p1tyo"]
_data = {
"life": SubResource("4")
}
[sub_resource type="SphereMesh" id="SphereMesh_xpgba"]
material = SubResource("StandardMaterial3D_4xppo")
radius = 0.125
height = 0.25
radial_segments = 16
rings = 8
[sub_resource type="Gradient" id="5"]
colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0)
[sub_resource type="SphereShape3D" id="6"]
radius = 0.27
[node name="Bullet" type="RigidBody3D"]
mass = 0.4
script = ExtResource("1")
[node name="Sphere" type="MeshInstance3D" parent="."]
transform = Transform3D(0.24972, 0, 0, 0, 0.24972, 0, 0, 0, 0.24972, 0.00159812, 0.0110106, 0.0045104)
mesh = SubResource( 2 )
surface_material_override/0 = SubResource( 3 )
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00159812, 0.0110106, 0.0045104)
cast_shadow = 0
mesh = SubResource("SphereMesh_syslt")
surface_material_override/0 = SubResource("3")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
autoplay = "life"
anims/life = SubResource( 4 )
libraries = {
"": SubResource("AnimationLibrary_p1tyo")
}
[node name="GPUParticles3D" type="CPUParticles3D" parent="."]
cast_shadow = 0
amount = 16
lifetime = 0.4
fixed_fps = 60
fract_delta = false
local_coords = false
mesh = SubResource( 2 )
mesh = SubResource("SphereMesh_xpgba")
spread = 0.0
gravity = Vector3(0, 0, 0)
scale_amount = 0.3
color_ramp = SubResource( 5 )
color_ramp = SubResource("5")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource( 6 )
shape = SubResource("6")

View File

@@ -1,8 +1,9 @@
[remap]
importer="texture"
type="StreamTexture2D"
path="res://.godot/imported/osb_down.png-3bcabfc1fcfaeeccc61e2e829d6554c4.stex"
type="CompressedTexture2D"
uid="uid://68sox6egj4j7"
path="res://.godot/imported/osb_down.png-3bcabfc1fcfaeeccc61e2e829d6554c4.ctex"
metadata={
"vram_texture": false
}
@@ -10,26 +11,24 @@ metadata={
[deps]
source_file="res://player/controls/osb_down.png"
dest_files=["res://.godot/imported/osb_down.png-3bcabfc1fcfaeeccc61e2e829d6554c4.stex"]
dest_files=["res://.godot/imported/osb_down.png-3bcabfc1fcfaeeccc61e2e829d6554c4.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=true
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -1,8 +1,9 @@
[remap]
importer="texture"
type="StreamTexture2D"
path="res://.godot/imported/osb_fire.png-2e93a3da4bfeb57477fca7905c0173a4.stex"
type="CompressedTexture2D"
uid="uid://bdrdyihccbisd"
path="res://.godot/imported/osb_fire.png-2e93a3da4bfeb57477fca7905c0173a4.ctex"
metadata={
"vram_texture": false
}
@@ -10,26 +11,24 @@ metadata={
[deps]
source_file="res://player/controls/osb_fire.png"
dest_files=["res://.godot/imported/osb_fire.png-2e93a3da4bfeb57477fca7905c0173a4.stex"]
dest_files=["res://.godot/imported/osb_fire.png-2e93a3da4bfeb57477fca7905c0173a4.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=true
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -1,8 +1,9 @@
[remap]
importer="texture"
type="StreamTexture2D"
path="res://.godot/imported/osb_jump.png-aa75300abbd0a7d9e9bc4796371c64a3.stex"
type="CompressedTexture2D"
uid="uid://wbqqcwj1d5u0"
path="res://.godot/imported/osb_jump.png-aa75300abbd0a7d9e9bc4796371c64a3.ctex"
metadata={
"vram_texture": false
}
@@ -10,26 +11,24 @@ metadata={
[deps]
source_file="res://player/controls/osb_jump.png"
dest_files=["res://.godot/imported/osb_jump.png-aa75300abbd0a7d9e9bc4796371c64a3.stex"]
dest_files=["res://.godot/imported/osb_jump.png-aa75300abbd0a7d9e9bc4796371c64a3.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=true
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -1,8 +1,9 @@
[remap]
importer="texture"
type="StreamTexture2D"
path="res://.godot/imported/osb_left.png-10e92e56ebe36a5205968909dc4b286b.stex"
type="CompressedTexture2D"
uid="uid://r6qxvqi0unib"
path="res://.godot/imported/osb_left.png-10e92e56ebe36a5205968909dc4b286b.ctex"
metadata={
"vram_texture": false
}
@@ -10,26 +11,24 @@ metadata={
[deps]
source_file="res://player/controls/osb_left.png"
dest_files=["res://.godot/imported/osb_left.png-10e92e56ebe36a5205968909dc4b286b.stex"]
dest_files=["res://.godot/imported/osb_left.png-10e92e56ebe36a5205968909dc4b286b.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=true
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -1,8 +1,9 @@
[remap]
importer="texture"
type="StreamTexture2D"
path="res://.godot/imported/osb_right.png-fb8adc0d65f2da35441a371b0865044c.stex"
type="CompressedTexture2D"
uid="uid://bw76q621n8fie"
path="res://.godot/imported/osb_right.png-fb8adc0d65f2da35441a371b0865044c.ctex"
metadata={
"vram_texture": false
}
@@ -10,26 +11,24 @@ metadata={
[deps]
source_file="res://player/controls/osb_right.png"
dest_files=["res://.godot/imported/osb_right.png-fb8adc0d65f2da35441a371b0865044c.stex"]
dest_files=["res://.godot/imported/osb_right.png-fb8adc0d65f2da35441a371b0865044c.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=true
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -1,8 +1,9 @@
[remap]
importer="texture"
type="StreamTexture2D"
path="res://.godot/imported/osb_up.png-03a826da4884734d6f66c813539bfce8.stex"
type="CompressedTexture2D"
uid="uid://kujhqacj3v72"
path="res://.godot/imported/osb_up.png-03a826da4884734d6f66c813539bfce8.ctex"
metadata={
"vram_texture": false
}
@@ -10,26 +11,24 @@ metadata={
[deps]
source_file="res://player/controls/osb_up.png"
dest_files=["res://.godot/imported/osb_up.png-03a826da4884734d6f66c813539bfce8.stex"]
dest_files=["res://.godot/imported/osb_up.png-03a826da4884734d6f66c813539bfce8.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=true
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -1,21 +1,23 @@
extends Camera3D
const MAX_HEIGHT = 2.0
const MIN_HEIGHT = 0
const MIN_HEIGHT = 0.0
@export var min_distance = 0.5
@export var max_distance = 3.5
@export var angle_v_adjust = 0.0
@export var autoturn_ray_aperture = 25
@export var autoturn_speed = 50
@export var min_distance := 0.5
@export var max_distance := 3.5
@export var angle_v_adjust := 0.0
@export var autoturn_ray_aperture := 25.0
@export var autoturn_speed := 50.0
var collision_exception: Array[RID] = []
var collision_exception = []
func _ready():
# Find collision exceptions for ray.
var node = self
while node:
if node is RigidDynamicBody3D:
var node: Node = self
while is_instance_valid(node):
if node is RigidBody3D:
collision_exception.append(node.get_rid())
break
else:
@@ -25,50 +27,63 @@ func _ready():
set_as_top_level(true)
func _physics_process(dt):
var target = get_parent().get_global_transform().origin
var pos = get_global_transform().origin
func _physics_process(delta: float):
var target := (get_parent() as Node3D).get_global_transform().origin
var pos := get_global_transform().origin
var delta = pos - target
var difference := pos - target
# Regular delta follow.
# Check ranges.
if delta.length() < min_distance:
delta = delta.normalized() * min_distance
elif delta.length() > max_distance:
delta = delta.normalized() * max_distance
if difference.length() < min_distance:
difference = difference.normalized() * min_distance
elif difference.length() > max_distance:
difference = difference.normalized() * max_distance
# Check upper and lower height.
delta.y = clamp(delta.y, MIN_HEIGHT, MAX_HEIGHT)
difference.y = clamp(difference.y, MIN_HEIGHT, MAX_HEIGHT)
# Check autoturn.
var ds = PhysicsServer3D.space_get_direct_state(get_world_3d().get_space())
var ds := PhysicsServer3D.space_get_direct_state(get_world_3d().get_space())
var col_left = ds.intersect_ray(target, target + Basis(Vector3.UP, deg2rad(autoturn_ray_aperture)) * (delta), collision_exception)
var col = ds.intersect_ray(target, target + delta, collision_exception)
var col_right = ds.intersect_ray(target, target + Basis(Vector3.UP, deg2rad(-autoturn_ray_aperture)) * (delta), collision_exception)
var col_left = ds.intersect_ray(PhysicsRayQueryParameters3D.create(
target,
target + Basis(Vector3.UP, deg_to_rad(autoturn_ray_aperture)) * (difference),
0xFFFFFFFF,
collision_exception
))
var col = ds.intersect_ray(PhysicsRayQueryParameters3D.create(
target,
target + difference,
0xFFFFFFFF,
collision_exception
))
var col_right = ds.intersect_ray(PhysicsRayQueryParameters3D.create(
target,
target + Basis(Vector3.UP, deg_to_rad(-autoturn_ray_aperture)) * (difference),
0xFFFFFFFF,
collision_exception
))
if not col.is_empty():
# If main ray was occluded, get camera closer, this is the worst case scenario.
delta = col.position - target
difference = col.position - target
elif not col_left.is_empty() and col_right.is_empty():
# If only left ray is occluded, turn the camera around to the right.
delta = Basis(Vector3.UP, deg2rad(-dt * (autoturn_speed)) * delta)
difference = Basis(Vector3.UP, deg_to_rad(-delta * (autoturn_speed))) * difference
elif col_left.is_empty() and not col_right.is_empty():
# If only right ray is occluded, turn the camera around to the left.
delta = Basis(Vector3.UP, deg2rad(dt *autoturn_speed)) * (delta)
difference = Basis(Vector3.UP, deg_to_rad(delta * autoturn_speed)) * difference
# Do nothing otherwise, left and right are occluded but center is not, so do not autoturn.
# Apply lookat.
if delta == Vector3():
delta = (pos - target).normalized() * 0.0001
if difference.is_zero_approx():
difference = (pos - target).normalized() * 0.0001
pos = target + delta
pos = target + difference
look_at_from_position(pos, target, Vector3.UP)
# Turn a little up or down.
var t = get_transform()
t.basis = Basis(t.basis[0], deg2rad(angle_v_adjust)) * t.basis
set_transform(t)
transform.basis = Basis(transform.basis[0], deg_to_rad(angle_v_adjust)) * transform.basis

View File

@@ -1,111 +1,127 @@
extends CharacterBody3D
class_name Player extends CharacterBody3D
enum Anim {
enum _Anim {
FLOOR,
AIR,
}
const SHOOT_TIME = 1.5
const SHOOT_SCALE = 2
const SHOOT_SCALE = 2.0
const CHAR_SCALE = Vector3(0.3, 0.3, 0.3)
const MAX_SPEED = 4.5
const TURN_SPEED = 40
const TURN_SPEED = 40.0
const JUMP_VELOCITY = 8.5
const BULLET_SPEED = 20
const BULLET_SPEED = 20.0
const AIR_IDLE_DEACCEL = false
const ACCEL = 14.0
const DEACCEL = 14.0
const AIR_ACCEL_FACTOR = 0.4
const SHARP_TURN_THRESHOLD = 140
const SHARP_TURN_THRESHOLD = deg_to_rad(140.0)
var movement_dir = Vector3()
var linear_velocity = Vector3()
var jumping = false
var prev_shoot = false
var shoot_blend = 0
var movement_dir := Vector3()
var jumping := false
var prev_shoot := false
var shoot_blend := 0.0
@onready var gravity = ProjectSettings.get_setting("physics/3d/default_gravity") * ProjectSettings.get_setting("physics/3d/default_gravity_vector")
@onready var gravity = ProjectSettings.get_setting("physics/3d/default_gravity") * \
ProjectSettings.get_setting("physics/3d/default_gravity_vector")
func _ready():
get_node(^"AnimationTree").set_active(true)
@onready var _camera := $Target/Camera3D as Camera3D
@onready var _animation_tree := $AnimationTree as AnimationTree
func _physics_process(delta):
linear_velocity += gravity * delta
velocity += gravity * delta
var anim = Anim.FLOOR
var anim := _Anim.FLOOR
var vv = linear_velocity.y # Vertical velocity.
var hv = Vector3(linear_velocity.x, 0, linear_velocity.z) # Horizontal velocity.
var vertical_velocity := velocity.y
var horizontal_velocity := Vector3(velocity.x, 0, velocity.z)
var hdir = hv.normalized() # Horizontal direction.
var hspeed = hv.length() # Horizontal speed.
var horizontal_direction := horizontal_velocity.normalized()
var horizontal_speed := horizontal_velocity.length()
# Player input.
var cam_basis = get_node(^"Target/Camera3D").get_global_transform().basis
var movement_vec2 = Input.get_vector("move_left", "move_right", "move_forward", "move_back")
var dir = cam_basis * Vector3(movement_vec2.x, 0, movement_vec2.y)
dir.y = 0
dir = dir.normalized()
var cam_basis := _camera.get_global_transform().basis
var movement_vec2 := Input.get_vector(&"move_left", &"move_right", &"move_forward", &"move_back")
var movement_direction := cam_basis * Vector3(movement_vec2.x, 0, movement_vec2.y)
movement_direction.y = 0
movement_direction = movement_direction.normalized()
var jump_attempt = Input.is_action_pressed(&"jump")
var shoot_attempt = Input.is_action_pressed(&"shoot")
var jump_attempt := Input.is_action_pressed(&"jump")
var shoot_attempt := Input.is_action_pressed(&"shoot")
if is_on_floor():
var sharp_turn = hspeed > 0.1 and rad2deg(acos(dir.dot(hdir))) > SHARP_TURN_THRESHOLD
var sharp_turn := horizontal_speed > 0.1 and \
acos(movement_direction.dot(horizontal_direction)) > SHARP_TURN_THRESHOLD
if dir.length() > 0.1 and not sharp_turn:
if hspeed > 0.001:
hdir = adjust_facing(hdir, dir, delta, 1.0 / hspeed * TURN_SPEED, Vector3.UP)
if movement_direction.length() > 0.1 and not sharp_turn:
if horizontal_speed > 0.001:
horizontal_direction = adjust_facing(
horizontal_direction,
movement_direction,
delta,
1.0 / horizontal_speed * TURN_SPEED,
Vector3.UP
)
else:
hdir = dir
horizontal_direction = movement_direction
if hspeed < MAX_SPEED:
hspeed += ACCEL * delta
if horizontal_speed < MAX_SPEED:
horizontal_speed += ACCEL * delta
else:
hspeed -= DEACCEL * delta
if hspeed < 0:
hspeed = 0
horizontal_speed -= DEACCEL * delta
if horizontal_speed < 0:
horizontal_speed = 0
hv = hdir * hspeed
horizontal_velocity = horizontal_direction * horizontal_speed
var mesh_xform = get_node(^"Armature").get_transform()
var facing_mesh = -mesh_xform.basis[0].normalized()
var mesh_xform := ($Player/Skeleton as Node3D).get_transform()
var facing_mesh := -mesh_xform.basis[0].normalized()
facing_mesh = (facing_mesh - Vector3.UP * facing_mesh.dot(Vector3.UP)).normalized()
if hspeed > 0:
facing_mesh = adjust_facing(facing_mesh, dir, delta, 1.0 / hspeed * TURN_SPEED, Vector3.UP)
var m3 = Basis(-facing_mesh, Vector3.UP, -facing_mesh.cross(Vector3.UP).normalized()).scaled(CHAR_SCALE)
if horizontal_speed > 0:
facing_mesh = adjust_facing(
facing_mesh,
movement_direction,
delta,
1.0 / horizontal_speed * TURN_SPEED,
Vector3.UP
)
var m3 := Basis(
-facing_mesh,
Vector3.UP,
-facing_mesh.cross(Vector3.UP).normalized()
).scaled(CHAR_SCALE)
get_node(^"Armature").set_transform(Transform3D(m3, mesh_xform.origin))
$Player/Skeleton.set_transform(Transform3D(m3, mesh_xform.origin))
if not jumping and jump_attempt:
vv = JUMP_VELOCITY
vertical_velocity = JUMP_VELOCITY
jumping = true
get_node(^"SoundJump").play()
$SoundJump.play()
else:
anim = Anim.AIR
anim = _Anim.AIR
if dir.length() > 0.1:
hv += dir * (ACCEL * AIR_ACCEL_FACTOR * delta)
if hv.length() > MAX_SPEED:
hv = hv.normalized() * MAX_SPEED
if movement_direction.length() > 0.1:
horizontal_velocity += movement_direction * (ACCEL * AIR_ACCEL_FACTOR * delta)
if horizontal_velocity.length() > MAX_SPEED:
horizontal_velocity = horizontal_velocity.normalized() * MAX_SPEED
elif AIR_IDLE_DEACCEL:
hspeed = hspeed - (DEACCEL * AIR_ACCEL_FACTOR * delta)
if hspeed < 0:
hspeed = 0
hv = hdir * hspeed
horizontal_speed = horizontal_speed - (DEACCEL * AIR_ACCEL_FACTOR * delta)
if horizontal_speed < 0:
horizontal_speed = 0
horizontal_velocity = horizontal_direction * horizontal_speed
if jumping and vv < 0:
if jumping and vertical_velocity < 0:
jumping = false
linear_velocity = hv + Vector3.UP * vv
velocity = horizontal_velocity + Vector3.UP * vertical_velocity
if is_on_floor():
movement_dir = linear_velocity
movement_dir = velocity
# TODO: This information should be set to the CharacterBody properties instead of arguments: , -gravity.normalized(
move_and_slide()
if shoot_blend > 0:
@@ -115,43 +131,46 @@ func _physics_process(delta):
if shoot_attempt and not prev_shoot:
shoot_blend = SHOOT_TIME
var bullet = preload("res://player/bullet/bullet.tscn").instantiate()
bullet.set_transform(get_node(^"Armature/Bullet").get_global_transform().orthonormalized())
var bullet := preload("res://player/bullet/bullet.tscn").instantiate() as Bullet
bullet.set_transform($Player/Skeleton/Bullet.get_global_transform().orthonormalized())
get_parent().add_child(bullet)
bullet.set_linear_velocity(get_node(^"Armature/Bullet").get_global_transform().basis[2].normalized() * BULLET_SPEED)
bullet.add_collision_exception_with(self) # Add it to bullet.
get_node(^"SoundShoot").play()
bullet.set_linear_velocity(
$Player/Skeleton/Bullet.get_global_transform().basis[2].normalized() * BULLET_SPEED
)
bullet.add_collision_exception_with(self)
$SoundShoot.play()
prev_shoot = shoot_attempt
if is_on_floor():
$AnimationTree["parameters/walk/blend_amount"] = hspeed / MAX_SPEED
_animation_tree[&"parameters/walk/blend_amount"] = horizontal_speed / MAX_SPEED
$AnimationTree["parameters/state/current"] = anim
$AnimationTree["parameters/air_dir/blend_amount"] = clamp(-linear_velocity.y / 4 + 0.5, 0, 1)
$AnimationTree["parameters/gun/blend_amount"] = min(shoot_blend, 1.0)
_animation_tree[&"parameters/state/current"] = anim
_animation_tree[&"parameters/air_dir/blend_amount"] = clamp(-velocity.y / 4 + 0.5, 0, 1)
_animation_tree[&"parameters/gun/blend_amount"] = min(shoot_blend, 1.0)
func adjust_facing(p_facing, p_target, p_step, p_adjust_rate, current_gn):
var n = p_target # Normal.
var t = n.cross(current_gn).normalized()
func adjust_facing(facing: Vector3, target: Vector3, step: float, adjust_rate: float, \
current_gn: Vector3) -> Vector3:
var normal := target
var t := normal.cross(current_gn).normalized()
var x = n.dot(p_facing)
var y = t.dot(p_facing)
var x := normal.dot(facing)
var y := t.dot(facing)
var ang = atan2(y,x)
var ang := atan2(y,x)
if abs(ang) < 0.001: # Too small.
return p_facing
if abs(ang) < 0.001:
return facing
var s = sign(ang)
var s := signf(ang)
ang = ang * s
var turn = ang * p_adjust_rate * p_step
var a
var turn := ang * adjust_rate * step
var a: float
if ang < turn:
a = ang
else:
a = turn
ang = (ang - a) * s
return (n * cos(ang) + t * sin(ang)) * p_facing.length()
return (normal * cos(ang) + t * sin(ang)) * facing.length()

Binary file not shown.

View File

@@ -0,0 +1,55 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://b5ljbav3jdp61"
path="res://.godot/imported/player.glb-d5e59c3624fa2635da7ea043f9526ccc.scn"
[deps]
source_file="res://player/player.glb"
dest_files=["res://.godot/imported/player.glb-d5e59c3624fa2635da7ea043f9526ccc.scn"]
[params]
nodes/root_type="Node3D"
nodes/root_name="Player"
nodes/root_scale=1.0
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=3
meshes/lightmap_texel_size=0.2
skins/use_named_skins=true
animation/import=true
animation/fps=30
import_script/path=""
_subresources={
"animations": {
"falling": {
"save_to_file/enabled": false,
"save_to_file/keep_custom_tracks": "",
"save_to_file/path": "",
"settings/loop_mode": 1
},
"idle": {
"save_to_file/enabled": false,
"save_to_file/keep_custom_tracks": "",
"save_to_file/path": "",
"settings/loop_mode": 1
},
"run": {
"save_to_file/enabled": false,
"save_to_file/keep_custom_tracks": "",
"save_to_file/path": "",
"settings/loop_mode": 1
},
"walk": {
"save_to_file/enabled": false,
"save_to_file/keep_custom_tracks": "",
"save_to_file/path": "",
"settings/loop_mode": 1
}
}
}

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,8 @@
[remap]
importer="wav"
type="AudioStreamSample"
type="AudioStreamWAV"
uid="uid://bplqk77bffdxr"
path="res://.godot/imported/sound_jump.wav-2a6db8acfd21d20a55b2f160c322e83f.sample"
[deps]
@@ -17,5 +18,7 @@ force/max_rate=false
force/max_rate_hz=44100
edit/trim=true
edit/normalize=true
edit/loop=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

View File

@@ -1,7 +1,8 @@
[remap]
importer="wav"
type="AudioStreamSample"
type="AudioStreamWAV"
uid="uid://cdx3i7hr2acow"
path="res://.godot/imported/sound_shoot.wav-1364cf87a9be9d98fd06fa6e8c50c93c.sample"
[deps]
@@ -17,5 +18,7 @@ force/max_rate=false
force/max_rate_hz=44100
edit/trim=true
edit/normalize=true
edit/loop=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=0

View File

@@ -6,15 +6,31 @@
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=4
config_version=5
_global_script_classes=[{
"base": "RigidBody3D",
"class": &"Bullet",
"language": &"GDScript",
"path": "res://player/bullet/bullet.gd"
}, {
"base": "CharacterBody3D",
"class": &"Player",
"language": &"GDScript",
"path": "res://player/player.gd"
}]
_global_script_class_icons={
"Bullet": "",
"Player": ""
}
[application]
config/name="Platformer 3D"
config/description="Platformer 3D demo using a CharacterBody3D.
It uses similar code to the 2D platformer, but implemented in 3D.
It also features audio reverberation (it sounds echo-y)."
run/main_scene="res://stage/stage.tscn"
It uses similar code to the 2D platformer, but implemented in 3D."
run/main_scene="res://game.tscn"
config/features=PackedStringArray("4.0")
config/icon="res://icon.png"
[gdnative]
@@ -25,106 +41,106 @@ singletons=[]
ui_accept={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777221,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777222,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777221,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777222,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null)
]
}
ui_select={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":3,"pressure":0.0,"pressed":false,"script":null)
]
}
ui_cancel={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777217,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777217,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":1,"pressure":0.0,"pressed":false,"script":null)
]
}
ui_focus_next={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777218,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777218,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
]
}
ui_focus_prev={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":true,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777218,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
]
}
ui_left={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777231,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777231,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null)
]
}
ui_right={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777233,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777233,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null)
]
}
ui_up={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777232,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777232,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null)
]
}
ui_down={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777234,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777234,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null)
]
}
ui_page_up={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777235,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777235,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
]
}
ui_page_down={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777236,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777236,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
]
}
move_forward={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777232,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":87,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777232,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":87,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null)
]
}
move_back={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777234,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":83,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777234,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":83,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":1.0,"script":null)
]
}
move_left={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777231,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":65,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777231,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":65,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null)
]
}
move_right={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":16777233,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":68,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":16777233,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":68,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null)
]
}
jump={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null)
]
}
shoot={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"pressed":false,"keycode":90,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"store_command":true,"alt_pressed":false,"shift_pressed":false,"meta_pressed":false,"command_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"pressed":false,"double_click":false,"script":null)
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":90,"physical_keycode":0,"unicode":0,"echo":false,"script":null)
, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"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,"pressed":false,"double_click":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":1,"pressure":0.0,"pressed":false,"script":null)
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":7,"pressure":0.0,"pressed":false,"script":null)
]
@@ -140,11 +156,5 @@ multithread/thread_rid_pool_prealloc=60
[rendering]
quality/driver/fallback_to_gles2=true
quality/intended_usage/framebuffer_allocation=3
vram_compression/import_etc=true
quality/shadows/filter_mode=2
quality/filters/anisotropic_filter_level=16
quality/filters/msaa=2
quality/filters/anisotropic_filter_level.mobile=4
quality/filters/msaa.mobile=0
anti_aliasing/quality/screen_space_aa=1
anti_aliasing/quality/use_debanding=true

Binary file not shown.

Before

Width:  |  Height:  |  Size: 357 KiB

After

Width:  |  Height:  |  Size: 789 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 537 KiB

After

Width:  |  Height:  |  Size: 774 KiB

View File

@@ -0,0 +1,4 @@
[gd_resource type="BoxShape3D" format=3 uid="uid://cnie2sp75ai87"]
[resource]
size = Vector3(2, 2, 2)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,4 @@
[gd_resource type="BoxShape3D" format=3 uid="uid://cu8jj2hhxojb5"]
[resource]
size = Vector3(0.6, 2, 0.6)

Binary file not shown.

View File

@@ -1,25 +0,0 @@
[gd_resource type="ArrayMesh" load_steps=4 format=2]
[ext_resource path="res://stage/texturemr.png" type="Texture2D" id=1]
[ext_resource path="res://stage/texture.png" type="Texture2D" id=2]
[sub_resource type="StandardMaterial3D" id=1]
albedo_texture = ExtResource( 2 )
metallic = 0.51
metallic_texture = ExtResource( 1 )
roughness = 0.2
roughness_texture = ExtResource( 1 )
[resource]
surfaces/0 = {
"aabb": AABB( -1, -1, -1, 2, 0, 2 ),
"array_data": PackedByteArray( 0, 188, 0, 188, 0, 60, 0, 60, 0, 127, 0, 0, 7, 58, 236, 51, 0, 60, 0, 188, 0, 60, 0, 60, 0, 127, 0, 0, 0, 60, 236, 51, 0, 60, 0, 188, 0, 188, 0, 60, 0, 127, 0, 0, 0, 60, 239, 17, 0, 188, 0, 188, 0, 188, 0, 60, 0, 127, 0, 0, 7, 58, 239, 17 ),
"array_index_data": PackedByteArray( 0, 0, 2, 0, 1, 0, 0, 0, 3, 0, 2, 0 ),
"blend_shape_data": [ ],
"format": 98067,
"index_count": 6,
"material": SubResource( 1 ),
"primitive": 4,
"skeleton_aabb": [ ],
"vertex_count": 4
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 B

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://de4ium0qlom16"
path="res://.godot/imported/ceiling.png-b411c4fb2dfe7b76f76ab05d80894e46.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://stage/meshes/previews/ceiling.png"
dest_files=["res://.godot/imported/ceiling.png-b411c4fb2dfe7b76f76ab05d80894e46.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 B

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d15fcw2varcjl"
path="res://.godot/imported/ceiling_corner.png-498ca340a8db3cbc6c34dcad400b367a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://stage/meshes/previews/ceiling_corner.png"
dest_files=["res://.godot/imported/ceiling_corner.png-498ca340a8db3cbc6c34dcad400b367a.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://chf3t80xvxnjs"
path="res://.godot/imported/ceiling_wall.png-8f89fa4a64d434133e380de70c43c51b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://stage/meshes/previews/ceiling_wall.png"
dest_files=["res://.godot/imported/ceiling_wall.png-8f89fa4a64d434133e380de70c43c51b.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://clum5gu8hk1ue"
path="res://.godot/imported/corner.png-43951091ea7eae66be65ec5c105969dc.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://stage/meshes/previews/corner.png"
dest_files=["res://.godot/imported/corner.png-43951091ea7eae66be65ec5c105969dc.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -0,0 +1,36 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ckwv7e3lpmorb"
path.s3tc="res://.godot/imported/corner_fix.png-9f4da4381cb6d362902dc512c1a5e9e1.s3tc.ctex"
path.etc2="res://.godot/imported/corner_fix.png-9f4da4381cb6d362902dc512c1a5e9e1.etc2.ctex"
metadata={
"imported_formats": ["s3tc", "etc2"],
"vram_texture": true
}
[deps]
source_file="res://stage/meshes/previews/corner_fix.png"
dest_files=["res://.godot/imported/corner_fix.png-9f4da4381cb6d362902dc512c1a5e9e1.s3tc.ctex", "res://.godot/imported/corner_fix.png-9f4da4381cb6d362902dc512c1a5e9e1.etc2.ctex"]
[params]
compress/mode=2
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://vb3ik3vup68g"
path="res://.godot/imported/corner_fixr.png-b8d2d6e26f2e0653e892e0105c8411e4.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://stage/meshes/previews/corner_fixr.png"
dest_files=["res://.godot/imported/corner_fixr.png-b8d2d6e26f2e0653e892e0105c8411e4.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://crkwyiw1srl0s"
path="res://.godot/imported/corner_floor.png-3ba191011902488f5711a0aa85cc5a9e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://stage/meshes/previews/corner_floor.png"
dest_files=["res://.godot/imported/corner_floor.png-3ba191011902488f5711a0aa85cc5a9e.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ceowqwjqgr5hh"
path="res://.godot/imported/floor.png-11d56f762516aee967ad58e43d515a3b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://stage/meshes/previews/floor.png"
dest_files=["res://.godot/imported/floor.png-11d56f762516aee967ad58e43d515a3b.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bbq8ew5nu5euk"
path="res://.godot/imported/floor_corner.png-7a6e00d34d08be9c35fc18bb965b3a27.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://stage/meshes/previews/floor_corner.png"
dest_files=["res://.godot/imported/floor_corner.png-7a6e00d34d08be9c35fc18bb965b3a27.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bn8u7u037b45d"
path="res://.godot/imported/floor_edge.png-ba7d7eb4bea47b68d023d46f34068ce1.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://stage/meshes/previews/floor_edge.png"
dest_files=["res://.godot/imported/floor_edge.png-ba7d7eb4bea47b68d023d46f34068ce1.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://co11nalhejjuy"
path="res://.godot/imported/ramp.png-422b477052e622f3b9d472f76e3ae427.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://stage/meshes/previews/ramp.png"
dest_files=["res://.godot/imported/ramp.png-422b477052e622f3b9d472f76e3ae427.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c81vs6shrgqy7"
path="res://.godot/imported/tree_top.png-36d00a867a49842f716790c921fc893f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://stage/meshes/previews/tree_top.png"
dest_files=["res://.godot/imported/tree_top.png-36d00a867a49842f716790c921fc893f.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ciqvgxs8iyuk3"
path="res://.godot/imported/trunk.png-59c0288facdeba4f059e9fa884cd4f7f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://stage/meshes/previews/trunk.png"
dest_files=["res://.godot/imported/trunk.png-59c0288facdeba4f059e9fa884cd4f7f.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cmcov60r5vwcd"
path="res://.godot/imported/trunk_deco.png-fa2ea5fc9d28f9109880d771f25fe42b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://stage/meshes/previews/trunk_deco.png"
dest_files=["res://.godot/imported/trunk_deco.png-fa2ea5fc9d28f9109880d771f25fe42b.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://7xrwpol80qv2"
path="res://.godot/imported/trunk_floor.png-64a298b7b901b8bba3e4113d256eff85.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://stage/meshes/previews/trunk_floor.png"
dest_files=["res://.godot/imported/trunk_floor.png-64a298b7b901b8bba3e4113d256eff85.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b02dqx1o1s7c6"
path="res://.godot/imported/wall.png-b41a70df849464e642dcebc822021522.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://stage/meshes/previews/wall.png"
dest_files=["res://.godot/imported/wall.png-b41a70df849464e642dcebc822021522.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dp8hjmj1g0g6j"
path="res://.godot/imported/wall_floor.png-e01c2f64781bb864142c7613f73b4369.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://stage/meshes/previews/wall_floor.png"
dest_files=["res://.godot/imported/wall_floor.png-e01c2f64781bb864142c7613f73b4369.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b3fnohn1axu6d"
path="res://.godot/imported/wall_var.png-34ec1ed3fee45358a9c45a60591fc954.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://stage/meshes/previews/wall_var.png"
dest_files=["res://.godot/imported/wall_var.png-34ec1ed3fee45358a9c45a60591fc954.ctex"]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/bptc_ldr=0
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More