Update 3D Platformer for 4.0 (#770)
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"]
|
||||
|
||||
10
3d/platformer/coin/coin_material.tres
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
BIN
3d/platformer/enemy/enemy.glb
Normal file
49
3d/platformer/enemy/enemy.glb.import
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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)
|
||||
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 24 KiB |
@@ -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
|
||||
|
||||
|
Before Width: | Height: | Size: 164 B After Width: | Height: | Size: 164 B |
34
3d/platformer/particle.png.import
Normal 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
|
||||
16
3d/platformer/particle_material.tres
Normal 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
|
||||
@@ -1,4 +1,4 @@
|
||||
extends RigidDynamicBody3D
|
||||
class_name Bullet extends RigidBody3D
|
||||
|
||||
|
||||
#warning-ignore:unused_class_variable
|
||||
var enabled = true
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
BIN
3d/platformer/player/player.glb
Normal file
55
3d/platformer/player/player.glb.import
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
Before Width: | Height: | Size: 357 KiB After Width: | Height: | Size: 789 KiB |
|
Before Width: | Height: | Size: 537 KiB After Width: | Height: | Size: 774 KiB |
4
3d/platformer/stage/collision/box.tres
Normal file
@@ -0,0 +1,4 @@
|
||||
[gd_resource type="BoxShape3D" format=3 uid="uid://cnie2sp75ai87"]
|
||||
|
||||
[resource]
|
||||
size = Vector3(2, 2, 2)
|
||||
BIN
3d/platformer/stage/collision/corner.res
Normal file
BIN
3d/platformer/stage/collision/corner_fix.res
Normal file
BIN
3d/platformer/stage/collision/corner_fixr.res
Normal file
BIN
3d/platformer/stage/collision/floor_corner.res
Normal file
BIN
3d/platformer/stage/collision/floor_edge.res
Normal file
BIN
3d/platformer/stage/collision/ramp.res
Normal file
4
3d/platformer/stage/collision/trunk.tres
Normal file
@@ -0,0 +1,4 @@
|
||||
[gd_resource type="BoxShape3D" format=3 uid="uid://cu8jj2hhxojb5"]
|
||||
|
||||
[resource]
|
||||
size = Vector3(0.6, 2, 0.6)
|
||||
BIN
3d/platformer/stage/collision/trunk_deco.res
Normal 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
|
||||
}
|
||||
BIN
3d/platformer/stage/grid_map.scn
Normal file
BIN
3d/platformer/stage/meshes/ceiling.res
Normal file
BIN
3d/platformer/stage/meshes/ceiling_corner.res
Normal file
BIN
3d/platformer/stage/meshes/ceiling_wall.res
Normal file
BIN
3d/platformer/stage/meshes/corner.res
Normal file
BIN
3d/platformer/stage/meshes/corner_fix.res
Normal file
BIN
3d/platformer/stage/meshes/corner_fixr.res
Normal file
BIN
3d/platformer/stage/meshes/corner_floor.res
Normal file
BIN
3d/platformer/stage/meshes/floor.res
Normal file
BIN
3d/platformer/stage/meshes/floor_corner.res
Normal file
BIN
3d/platformer/stage/meshes/floor_edge.res
Normal file
BIN
3d/platformer/stage/meshes/previews/ceiling.png
Normal file
|
After Width: | Height: | Size: 87 B |
34
3d/platformer/stage/meshes/previews/ceiling.png.import
Normal 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
|
||||
BIN
3d/platformer/stage/meshes/previews/ceiling_corner.png
Normal file
|
After Width: | Height: | Size: 87 B |
@@ -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
|
||||
BIN
3d/platformer/stage/meshes/previews/ceiling_wall.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
34
3d/platformer/stage/meshes/previews/ceiling_wall.png.import
Normal 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
|
||||
BIN
3d/platformer/stage/meshes/previews/corner.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
34
3d/platformer/stage/meshes/previews/corner.png.import
Normal 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
|
||||
BIN
3d/platformer/stage/meshes/previews/corner_fix.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
36
3d/platformer/stage/meshes/previews/corner_fix.png.import
Normal 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
|
||||
BIN
3d/platformer/stage/meshes/previews/corner_fixr.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
34
3d/platformer/stage/meshes/previews/corner_fixr.png.import
Normal 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
|
||||
BIN
3d/platformer/stage/meshes/previews/corner_floor.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
34
3d/platformer/stage/meshes/previews/corner_floor.png.import
Normal 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
|
||||
BIN
3d/platformer/stage/meshes/previews/floor.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
34
3d/platformer/stage/meshes/previews/floor.png.import
Normal 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
|
||||
BIN
3d/platformer/stage/meshes/previews/floor_corner.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
34
3d/platformer/stage/meshes/previews/floor_corner.png.import
Normal 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
|
||||
BIN
3d/platformer/stage/meshes/previews/floor_edge.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
34
3d/platformer/stage/meshes/previews/floor_edge.png.import
Normal 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
|
||||
BIN
3d/platformer/stage/meshes/previews/ramp.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
34
3d/platformer/stage/meshes/previews/ramp.png.import
Normal 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
|
||||
BIN
3d/platformer/stage/meshes/previews/tree_top.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
34
3d/platformer/stage/meshes/previews/tree_top.png.import
Normal 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
|
||||
BIN
3d/platformer/stage/meshes/previews/trunk.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
34
3d/platformer/stage/meshes/previews/trunk.png.import
Normal 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
|
||||
BIN
3d/platformer/stage/meshes/previews/trunk_deco.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
34
3d/platformer/stage/meshes/previews/trunk_deco.png.import
Normal 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
|
||||
BIN
3d/platformer/stage/meshes/previews/trunk_floor.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
34
3d/platformer/stage/meshes/previews/trunk_floor.png.import
Normal 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
|
||||
BIN
3d/platformer/stage/meshes/previews/wall.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
34
3d/platformer/stage/meshes/previews/wall.png.import
Normal 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
|
||||
BIN
3d/platformer/stage/meshes/previews/wall_floor.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
34
3d/platformer/stage/meshes/previews/wall_floor.png.import
Normal 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
|
||||
BIN
3d/platformer/stage/meshes/previews/wall_var.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
34
3d/platformer/stage/meshes/previews/wall_var.png.import
Normal 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
|
||||