level + enemy spawner refactor
This commit is contained in:
parent
ebdb9c7074
commit
2cc3eaa859
15 changed files with 942 additions and 93 deletions
|
|
@ -16,6 +16,7 @@ func _physics_process(delta: float) -> void:
|
||||||
move_and_slide()
|
move_and_slide()
|
||||||
|
|
||||||
rotation.y = Vector2(velocity.x, -velocity.z).angle()
|
rotation.y = Vector2(velocity.x, -velocity.z).angle()
|
||||||
|
position.y = 0.01
|
||||||
|
|
||||||
func hit(_proj: PlayerProjectile, damage: float) -> bool:
|
func hit(_proj: PlayerProjectile, damage: float) -> bool:
|
||||||
health -= damage
|
health -= damage
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
57
levels/enemy_spawner.gd
Normal file
57
levels/enemy_spawner.gd
Normal file
|
|
@ -0,0 +1,57 @@
|
||||||
|
extends Node3D
|
||||||
|
|
||||||
|
var boxes: Array[CSGBox3D]
|
||||||
|
var points: Array[Vector3]
|
||||||
|
|
||||||
|
const MAX_CACHED_POINTS := 100
|
||||||
|
var doomed_point_idx := 0
|
||||||
|
|
||||||
|
func _get_point() -> Vector3:
|
||||||
|
assert(not boxes.is_empty())
|
||||||
|
|
||||||
|
var box: CSGBox3D = boxes.pick_random()
|
||||||
|
var x_stride := box.size.x / 2
|
||||||
|
var y_stride := box.size.y / 2
|
||||||
|
|
||||||
|
var ret := box.global_position
|
||||||
|
ret.x += randf_range(-x_stride, x_stride)
|
||||||
|
ret.y += randf_range(-y_stride, y_stride)
|
||||||
|
|
||||||
|
return ret
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
for child in get_children():
|
||||||
|
if child is CSGBox3D:
|
||||||
|
boxes.push_back(child)
|
||||||
|
|
||||||
|
func _process(_delta: float) -> void:
|
||||||
|
var v := _get_point()
|
||||||
|
v.y = 50.
|
||||||
|
|
||||||
|
var col_mask := 16 # floor collision layer
|
||||||
|
var params := PhysicsRayQueryParameters3D.create(
|
||||||
|
v, v + Vector3.DOWN * 100., col_mask
|
||||||
|
)
|
||||||
|
var raycast := get_world_3d().direct_space_state.intersect_ray(params)
|
||||||
|
|
||||||
|
if not raycast.is_empty():
|
||||||
|
var hitpos: Vector3 = raycast.position
|
||||||
|
|
||||||
|
if points.size() < MAX_CACHED_POINTS:
|
||||||
|
points.push_back(hitpos)
|
||||||
|
else:
|
||||||
|
points[doomed_point_idx] = hitpos
|
||||||
|
doomed_point_idx += 1
|
||||||
|
doomed_point_idx = doomed_point_idx % MAX_CACHED_POINTS
|
||||||
|
|
||||||
|
func _on_timer_timeout() -> void:
|
||||||
|
if points.is_empty(): return
|
||||||
|
|
||||||
|
var pos: Vector3 = points.pick_random()
|
||||||
|
pos += Vector3.UP * 0.02
|
||||||
|
var scene := preload("res://enemies/police_car/police_car.tscn")
|
||||||
|
var car: Node3D = scene.instantiate()
|
||||||
|
car.global_position = pos
|
||||||
|
get_tree().current_scene.add_child(car)
|
||||||
|
|
||||||
|
|
||||||
1
levels/enemy_spawner.gd.uid
Normal file
1
levels/enemy_spawner.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://bayj73ugmsbd
|
||||||
File diff suppressed because one or more lines are too long
9
levels/trees.gd
Normal file
9
levels/trees.gd
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
@tool
|
||||||
|
extends Node3D
|
||||||
|
|
||||||
|
@export_tool_button("Randomize Tree Rotations")
|
||||||
|
var _rot_button = _randomize_rotations
|
||||||
|
|
||||||
|
func _randomize_rotations() -> void:
|
||||||
|
for child in get_children():
|
||||||
|
child.rotation.y = randf() * TAU
|
||||||
1
levels/trees.gd.uid
Normal file
1
levels/trees.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://dwtdtm0engrs1
|
||||||
|
|
@ -52,7 +52,7 @@ func exp_lerp(a: Variant, b: Variant, decay: float, dt: float) -> Variant:
|
||||||
func _process_movement(delta: float) -> void:
|
func _process_movement(delta: float) -> void:
|
||||||
var input = Input.get_vector("move_left", "move_right", "move_up", "move_down")
|
var input = Input.get_vector("move_left", "move_right", "move_up", "move_down")
|
||||||
input.normalized()
|
input.normalized()
|
||||||
var mul := 5. if DebugMenu.high_speed_hack else 1.
|
var mul := 10. if DebugMenu.high_speed_hack else 1.
|
||||||
var desired_velocity = Vector3(input.x, 0., input.y) * MOVE_SPEED * mul
|
var desired_velocity = Vector3(input.x, 0., input.y) * MOVE_SPEED * mul
|
||||||
velocity = exp_lerp(velocity, desired_velocity, 20, delta)
|
velocity = exp_lerp(velocity, desired_velocity, 20, delta)
|
||||||
move_and_slide()
|
move_and_slide()
|
||||||
|
|
@ -103,6 +103,10 @@ func _process_shoot(delta: float) -> void:
|
||||||
func _process_cam_shake(delta: float) -> void:
|
func _process_cam_shake(delta: float) -> void:
|
||||||
shake_duration -= delta
|
shake_duration -= delta
|
||||||
%Camera3D.transform = camera_transform
|
%Camera3D.transform = camera_transform
|
||||||
|
|
||||||
|
if DebugMenu.zoomed_out:
|
||||||
|
%Camera3D.position += %Camera3D.basis.z * 20.
|
||||||
|
|
||||||
if shake_duration <= 0:
|
if shake_duration <= 0:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
@ -142,4 +146,5 @@ func damage(damager: Node3D) -> void:
|
||||||
shake_duration = .25
|
shake_duration = .25
|
||||||
|
|
||||||
if health == 0:
|
if health == 0:
|
||||||
get_tree().reload_current_scene()
|
pass
|
||||||
|
#get_tree().reload_current_scene()
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ config_version=5
|
||||||
[application]
|
[application]
|
||||||
|
|
||||||
config/name="Road Rage Tank"
|
config/name="Road Rage Tank"
|
||||||
run/main_scene="uid://civwljgkv3m53"
|
run/main_scene="uid://6t6382ugkyft"
|
||||||
config/features=PackedStringArray("4.6")
|
config/features=PackedStringArray("4.6")
|
||||||
config/icon="res://icon.svg"
|
config/icon="res://icon.svg"
|
||||||
|
|
||||||
|
|
@ -27,6 +27,8 @@ enabled=PackedStringArray()
|
||||||
[global_group]
|
[global_group]
|
||||||
|
|
||||||
navigation_mesh_source_group=""
|
navigation_mesh_source_group=""
|
||||||
|
floor=""
|
||||||
|
grass=""
|
||||||
|
|
||||||
[input]
|
[input]
|
||||||
|
|
||||||
|
|
@ -77,3 +79,12 @@ debug_menu={
|
||||||
3d_physics/layer_2="Player"
|
3d_physics/layer_2="Player"
|
||||||
3d_physics/layer_3="Building"
|
3d_physics/layer_3="Building"
|
||||||
3d_physics/layer_4="Police"
|
3d_physics/layer_4="Police"
|
||||||
|
3d_physics/layer_5="Floor"
|
||||||
|
|
||||||
|
[physics]
|
||||||
|
|
||||||
|
3d/physics_engine="Jolt Physics"
|
||||||
|
|
||||||
|
[rendering]
|
||||||
|
|
||||||
|
anti_aliasing/quality/screen_space_aa=2
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
extends CanvasLayer
|
extends CanvasLayer
|
||||||
|
|
||||||
var high_speed_hack := false
|
var high_speed_hack := false
|
||||||
|
var zoomed_out := false
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
hide()
|
hide()
|
||||||
|
|
@ -13,3 +14,6 @@ func _process(_delta: float) -> void:
|
||||||
func _on_high_speed_button_pressed() -> void:
|
func _on_high_speed_button_pressed() -> void:
|
||||||
high_speed_hack = not high_speed_hack
|
high_speed_hack = not high_speed_hack
|
||||||
|
|
||||||
|
func _on_toggle_zoom_button_pressed() -> void:
|
||||||
|
zoomed_out = not zoomed_out
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,4 +45,11 @@ size_flags_vertical = 4
|
||||||
theme_override_font_sizes/font_size = 30
|
theme_override_font_sizes/font_size = 30
|
||||||
text = "High Speed"
|
text = "High Speed"
|
||||||
|
|
||||||
|
[node name="ToggleZoomButton" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer" unique_id=1729373000]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 4
|
||||||
|
theme_override_font_sizes/font_size = 30
|
||||||
|
text = "Zoom Out Camera"
|
||||||
|
|
||||||
[connection signal="pressed" from="PanelContainer/MarginContainer/VBoxContainer/HighSpeedButton" to="." method="_on_high_speed_button_pressed"]
|
[connection signal="pressed" from="PanelContainer/MarginContainer/VBoxContainer/HighSpeedButton" to="." method="_on_high_speed_button_pressed"]
|
||||||
|
[connection signal="pressed" from="PanelContainer/MarginContainer/VBoxContainer/ToggleZoomButton" to="." method="_on_toggle_zoom_button_pressed"]
|
||||||
|
|
|
||||||
18
world/building/base_building.tscn
Normal file
18
world/building/base_building.tscn
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
[gd_scene format=3 uid="uid://yseykcc08n25"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://bnr37lfj76u7n" path="res://world/building/building.gd" id="1_xdgb6"]
|
||||||
|
|
||||||
|
[sub_resource type="FastNoiseLite" id="FastNoiseLite_d2kbb"]
|
||||||
|
|
||||||
|
[node name="BaseBuilding" type="StaticBody3D" unique_id=713127214]
|
||||||
|
collision_layer = 5
|
||||||
|
collision_mask = 0
|
||||||
|
script = ExtResource("1_xdgb6")
|
||||||
|
shake_noise = SubResource("FastNoiseLite_d2kbb")
|
||||||
|
|
||||||
|
[node name="DestroyedMesh" type="Node3D" parent="." unique_id=1889390235]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
visible = false
|
||||||
|
|
||||||
|
[node name="Shaker" type="Node3D" parent="." unique_id=2089389922]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
class_name Building
|
class_name Building
|
||||||
extends CollisionObject3D
|
extends CollisionObject3D
|
||||||
|
|
||||||
var health := 10.
|
@export var health := 10.
|
||||||
|
|
||||||
@export var shake_noise: FastNoiseLite
|
@export var shake_noise: FastNoiseLite
|
||||||
var shake_duration := 0.
|
var shake_duration := 0.
|
||||||
@onready var initial_mesh_pos: Vector3 = %Mesh.position
|
@onready var initial_shaker_pos: Vector3 = %Shaker.position
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
scale.y = randf_range(.5, 1.25)
|
scale.y = randf_range(.5, 1.25)
|
||||||
|
|
@ -13,11 +13,11 @@ func _ready() -> void:
|
||||||
|
|
||||||
func _process(delta: float) -> void:
|
func _process(delta: float) -> void:
|
||||||
if shake_duration <= 0:
|
if shake_duration <= 0:
|
||||||
%Mesh.position = initial_mesh_pos
|
%Shaker.position = initial_shaker_pos
|
||||||
else:
|
else:
|
||||||
var x := shake_noise.get_noise_1d(shake_duration * 10000)
|
var x := shake_noise.get_noise_1d(shake_duration * 10000)
|
||||||
var y := shake_noise.get_noise_1d(-shake_duration * 10000)
|
var y := shake_noise.get_noise_1d(-shake_duration * 10000)
|
||||||
%Mesh.position = initial_mesh_pos + (Vector3(x, 0, y) * 0.75)
|
%Shaker.position = initial_shaker_pos + (Vector3(x, 0, y) * 0.75)
|
||||||
|
|
||||||
shake_duration = move_toward(shake_duration, 0., delta)
|
shake_duration = move_toward(shake_duration, 0., delta)
|
||||||
|
|
||||||
|
|
@ -28,7 +28,7 @@ func hit(_proj: PlayerProjectile, damage: float) -> bool:
|
||||||
SignalBus.building_destroyed.emit(self)
|
SignalBus.building_destroyed.emit(self)
|
||||||
collision_layer = 1 # World collision only
|
collision_layer = 1 # World collision only
|
||||||
|
|
||||||
%Mesh.hide()
|
%Shaker.hide()
|
||||||
%DestroyedMesh.show()
|
%DestroyedMesh.show()
|
||||||
%GPUParticles3D.preprocess = randf()
|
%GPUParticles3D.preprocess = randf()
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,6 @@
|
||||||
[gd_scene format=3 uid="uid://cm86dxphvhbb"]
|
[gd_scene format=3 uid="uid://cm86dxphvhbb"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://bnr37lfj76u7n" path="res://world/building/building.gd" id="1_5j34s"]
|
[ext_resource type="PackedScene" uid="uid://yseykcc08n25" path="res://world/building/base_building.tscn" id="1_d2kbb"]
|
||||||
|
|
||||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_d2kbb"]
|
|
||||||
|
|
||||||
[sub_resource type="BoxMesh" id="BoxMesh_rqn35"]
|
|
||||||
size = Vector3(3, 5, 3)
|
|
||||||
|
|
||||||
[sub_resource type="BoxShape3D" id="BoxShape3D_5j34s"]
|
[sub_resource type="BoxShape3D" id="BoxShape3D_5j34s"]
|
||||||
size = Vector3(3, 5, 3)
|
size = Vector3(3, 5, 3)
|
||||||
|
|
@ -46,26 +41,16 @@ material = SubResource("StandardMaterial3D_2vvqs")
|
||||||
|
|
||||||
[sub_resource type="BoxMesh" id="BoxMesh_5j34s"]
|
[sub_resource type="BoxMesh" id="BoxMesh_5j34s"]
|
||||||
|
|
||||||
[node name="Building" type="StaticBody3D" unique_id=713127214]
|
[sub_resource type="BoxMesh" id="BoxMesh_rqn35"]
|
||||||
collision_layer = 5
|
size = Vector3(3, 5, 3)
|
||||||
collision_mask = 0
|
|
||||||
script = ExtResource("1_5j34s")
|
|
||||||
shake_noise = SubResource("FastNoiseLite_d2kbb")
|
|
||||||
|
|
||||||
[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1919101154]
|
[node name="Building" unique_id=713127214 instance=ExtResource("1_d2kbb")]
|
||||||
unique_name_in_owner = true
|
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0)
|
|
||||||
mesh = SubResource("BoxMesh_rqn35")
|
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=1627500046]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="." index="0" unique_id=661727263]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0)
|
||||||
shape = SubResource("BoxShape3D_5j34s")
|
shape = SubResource("BoxShape3D_5j34s")
|
||||||
|
|
||||||
[node name="DestroyedMesh" type="Node3D" parent="." unique_id=1889390235]
|
[node name="GPUParticles3D" type="GPUParticles3D" parent="DestroyedMesh" parent_id_path=PackedInt32Array(1889390235) index="0" unique_id=349729190]
|
||||||
unique_name_in_owner = true
|
|
||||||
visible = false
|
|
||||||
|
|
||||||
[node name="GPUParticles3D" type="GPUParticles3D" parent="DestroyedMesh" unique_id=405124106]
|
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
amount = 1
|
amount = 1
|
||||||
lifetime = 0.5
|
lifetime = 0.5
|
||||||
|
|
@ -73,56 +58,61 @@ speed_scale = 0.5
|
||||||
process_material = SubResource("ParticleProcessMaterial_ow2p3")
|
process_material = SubResource("ParticleProcessMaterial_ow2p3")
|
||||||
draw_pass_1 = SubResource("SphereMesh_8evq1")
|
draw_pass_1 = SubResource("SphereMesh_8evq1")
|
||||||
|
|
||||||
[node name="Cubez" type="Node3D" parent="DestroyedMesh" unique_id=84909385]
|
[node name="Cubez" type="Node3D" parent="DestroyedMesh" parent_id_path=PackedInt32Array(1889390235) index="1" unique_id=289648386]
|
||||||
|
|
||||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="DestroyedMesh/Cubez" unique_id=936603106]
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="0" unique_id=1483935163]
|
||||||
transform = Transform3D(-0.020582985, -0.013163342, -0.9997015, 0.53877074, -0.8424524, -2.0764832e-08, -0.84220093, -0.5386099, 0.02443221, 0, 0, 0)
|
transform = Transform3D(-0.020582985, -0.013163342, -0.9997015, 0.53877074, -0.8424524, -2.0764832e-08, -0.84220093, -0.5386099, 0.02443221, 0, 0, 0)
|
||||||
mesh = SubResource("BoxMesh_5j34s")
|
mesh = SubResource("BoxMesh_5j34s")
|
||||||
|
|
||||||
[node name="MeshInstance3D2" type="MeshInstance3D" parent="DestroyedMesh/Cubez" unique_id=1902773756]
|
[node name="MeshInstance3D2" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="1" unique_id=1721508190]
|
||||||
transform = Transform3D(0.55269843, 0.35346538, -0.7547096, 0.53877074, -0.8424524, -2.0764832e-08, -0.6358069, -0.40661544, -0.65605897, 0, 0, 0)
|
transform = Transform3D(0.55269843, 0.35346538, -0.7547096, 0.53877074, -0.8424524, -2.0764832e-08, -0.6358069, -0.40661544, -0.65605897, 0, 0, 0)
|
||||||
mesh = SubResource("BoxMesh_5j34s")
|
mesh = SubResource("BoxMesh_5j34s")
|
||||||
|
|
||||||
[node name="MeshInstance3D3" type="MeshInstance3D" parent="DestroyedMesh/Cubez" unique_id=693829807]
|
[node name="MeshInstance3D3" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="2" unique_id=1453671131]
|
||||||
transform = Transform3D(0.55269843, 0.35346538, -0.7547096, 0.53877074, -0.8424524, -2.0764832e-08, -0.6358069, -0.40661544, -0.65605897, -0.5652933, 0, -0.5979067)
|
transform = Transform3D(0.55269843, 0.35346538, -0.7547096, 0.53877074, -0.8424524, -2.0764832e-08, -0.6358069, -0.40661544, -0.65605897, -0.5652933, 0, -0.5979067)
|
||||||
mesh = SubResource("BoxMesh_5j34s")
|
mesh = SubResource("BoxMesh_5j34s")
|
||||||
|
|
||||||
[node name="MeshInstance3D4" type="MeshInstance3D" parent="DestroyedMesh/Cubez" unique_id=1318120052]
|
[node name="MeshInstance3D4" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="3" unique_id=593181716]
|
||||||
transform = Transform3D(0.011722982, 0.9259946, -0.37735477, 0.35865596, 0.34837604, 0.86602545, 0.9333962, -0.14549291, -0.32802945, 0.41309977, 0, -0.7827141)
|
transform = Transform3D(0.011722982, 0.9259946, -0.37735477, 0.35865596, 0.34837604, 0.86602545, 0.9333962, -0.14549291, -0.32802945, 0.41309977, 0, -0.7827141)
|
||||||
mesh = SubResource("BoxMesh_5j34s")
|
mesh = SubResource("BoxMesh_5j34s")
|
||||||
|
|
||||||
[node name="MeshInstance3D5" type="MeshInstance3D" parent="DestroyedMesh/Cubez" unique_id=1106985548]
|
[node name="MeshInstance3D5" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="4" unique_id=1719125877]
|
||||||
transform = Transform3D(0.011722982, 0.9259946, -0.37735477, 0.35865596, 0.34837604, 0.86602545, 0.9333962, -0.14549291, -0.32802945, 0.91316706, 0, -0.43484128)
|
transform = Transform3D(0.011722982, 0.9259946, -0.37735477, 0.35865596, 0.34837604, 0.86602545, 0.9333962, -0.14549291, -0.32802945, 0.91316706, 0, -0.43484128)
|
||||||
mesh = SubResource("BoxMesh_5j34s")
|
mesh = SubResource("BoxMesh_5j34s")
|
||||||
|
|
||||||
[node name="MeshInstance3D6" type="MeshInstance3D" parent="DestroyedMesh/Cubez" unique_id=1830889998]
|
[node name="MeshInstance3D6" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="5" unique_id=1454957802]
|
||||||
transform = Transform3D(0.011722982, 0.9259946, -0.37735477, 0.35865596, 0.34837604, 0.86602545, 0.9333962, -0.14549291, -0.32802945, -0.90229505, 0, 0.19567871)
|
transform = Transform3D(0.011722982, 0.9259946, -0.37735477, 0.35865596, 0.34837604, 0.86602545, 0.9333962, -0.14549291, -0.32802945, -0.90229505, 0, 0.19567871)
|
||||||
mesh = SubResource("BoxMesh_5j34s")
|
mesh = SubResource("BoxMesh_5j34s")
|
||||||
|
|
||||||
[node name="MeshInstance3D7" type="MeshInstance3D" parent="DestroyedMesh/Cubez" unique_id=223786894]
|
[node name="MeshInstance3D7" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="6" unique_id=192394078]
|
||||||
transform = Transform3D(-0.4571105, 0.47059897, -0.7547096, 0.717312, 0.69675213, -2.0764832e-08, 0.5258455, -0.5413622, -0.65605897, -1.4241041, 0, -0.9131663)
|
transform = Transform3D(-0.4571105, 0.47059897, -0.7547096, 0.717312, 0.69675213, -2.0764832e-08, 0.5258455, -0.5413622, -0.65605897, -1.4241041, 0, -0.9131663)
|
||||||
mesh = SubResource("BoxMesh_5j34s")
|
mesh = SubResource("BoxMesh_5j34s")
|
||||||
|
|
||||||
[node name="MeshInstance3D8" type="MeshInstance3D" parent="DestroyedMesh/Cubez" unique_id=220079864]
|
[node name="MeshInstance3D8" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="7" unique_id=1974385658]
|
||||||
transform = Transform3D(0.55269843, 0.35346538, -0.7547096, 0.53877074, -0.8424524, -2.0764832e-08, -0.6358069, -0.40661544, -0.65605897, 0.5758959, 0, 0.086833715)
|
transform = Transform3D(0.55269843, 0.35346538, -0.7547096, 0.53877074, -0.8424524, -2.0764832e-08, -0.6358069, -0.40661544, -0.65605897, 0.5758959, 0, 0.086833715)
|
||||||
mesh = SubResource("BoxMesh_5j34s")
|
mesh = SubResource("BoxMesh_5j34s")
|
||||||
|
|
||||||
[node name="MeshInstance3D9" type="MeshInstance3D" parent="DestroyedMesh/Cubez" unique_id=235651157]
|
[node name="MeshInstance3D9" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="8" unique_id=652075050]
|
||||||
transform = Transform3D(0.55269843, 0.35346538, -0.7547096, 0.53877074, -0.8424524, -2.0764832e-08, -0.6358069, -0.40661544, -0.65605897, 0.94551057, 0, 0.86954826)
|
transform = Transform3D(0.55269843, 0.35346538, -0.7547096, 0.53877074, -0.8424524, -2.0764832e-08, -0.6358069, -0.40661544, -0.65605897, 0.94551057, 0, 0.86954826)
|
||||||
mesh = SubResource("BoxMesh_5j34s")
|
mesh = SubResource("BoxMesh_5j34s")
|
||||||
|
|
||||||
[node name="MeshInstance3D10" type="MeshInstance3D" parent="DestroyedMesh/Cubez" unique_id=1163044184]
|
[node name="MeshInstance3D10" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="9" unique_id=1495304389]
|
||||||
transform = Transform3D(-0.4571105, 0.47059897, -0.7547096, 0.717312, 0.69675213, -2.0764832e-08, 0.5258455, -0.5413622, -0.65605897, -0.26117355, 0, 0.8586771)
|
transform = Transform3D(-0.4571105, 0.47059897, -0.7547096, 0.717312, 0.69675213, -2.0764832e-08, 0.5258455, -0.5413622, -0.65605897, -0.26117355, 0, 0.8586771)
|
||||||
mesh = SubResource("BoxMesh_5j34s")
|
mesh = SubResource("BoxMesh_5j34s")
|
||||||
|
|
||||||
[node name="MeshInstance3D11" type="MeshInstance3D" parent="DestroyedMesh/Cubez" unique_id=804770500]
|
[node name="MeshInstance3D11" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="10" unique_id=1593134047]
|
||||||
transform = Transform3D(0.55074334, -0.56699485, -0.61253464, 0.71731204, 0.6967521, 0, 0.42678478, -0.43937847, 0.7904438, -1.022146, 0, 1.0760975)
|
transform = Transform3D(0.55074334, -0.56699485, -0.61253464, 0.71731204, 0.6967521, 0, 0.42678478, -0.43937847, 0.7904438, -1.022146, 0, 1.0760975)
|
||||||
mesh = SubResource("BoxMesh_5j34s")
|
mesh = SubResource("BoxMesh_5j34s")
|
||||||
|
|
||||||
[node name="MeshInstance3D12" type="MeshInstance3D" parent="DestroyedMesh/Cubez" unique_id=1102483093]
|
[node name="MeshInstance3D12" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="11" unique_id=1005652425]
|
||||||
transform = Transform3D(0.55074334, -0.56699485, -0.61253464, 0.71731204, 0.6967521, 0, 0.42678478, -0.43937847, 0.7904438, 0.977854, 0, -0.9239025)
|
transform = Transform3D(0.55074334, -0.56699485, -0.61253464, 0.71731204, 0.6967521, 0, 0.42678478, -0.43937847, 0.7904438, 0.977854, 0, -0.9239025)
|
||||||
mesh = SubResource("BoxMesh_5j34s")
|
mesh = SubResource("BoxMesh_5j34s")
|
||||||
|
|
||||||
[node name="MeshInstance3D13" type="MeshInstance3D" parent="DestroyedMesh/Cubez" unique_id=1341429344]
|
[node name="MeshInstance3D13" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="12" unique_id=1957113469]
|
||||||
transform = Transform3D(-0.020582985, -0.013163342, -0.9997015, 0.53877074, -0.8424524, -2.0764832e-08, -0.84220093, -0.5386099, 0.02443221, -0.4571221, 0, -1.3370018)
|
transform = Transform3D(-0.020582985, -0.013163342, -0.9997015, 0.53877074, -0.8424524, -2.0764832e-08, -0.84220093, -0.5386099, 0.02443221, -0.4571221, 0, -1.3370018)
|
||||||
mesh = SubResource("BoxMesh_5j34s")
|
mesh = SubResource("BoxMesh_5j34s")
|
||||||
|
|
||||||
|
[node name="Mesh" type="MeshInstance3D" parent="Shaker" parent_id_path=PackedInt32Array(2089389922) index="0" unique_id=26690267]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0)
|
||||||
|
mesh = SubResource("BoxMesh_rqn35")
|
||||||
|
|
|
||||||
141
world/building/tree.tscn
Normal file
141
world/building/tree.tscn
Normal file
|
|
@ -0,0 +1,141 @@
|
||||||
|
[gd_scene format=3 uid="uid://dnl2jhf7rj33h"]
|
||||||
|
|
||||||
|
[ext_resource type="PackedScene" uid="uid://yseykcc08n25" path="res://world/building/base_building.tscn" id="1_hn3k1"]
|
||||||
|
|
||||||
|
[sub_resource type="Gradient" id="Gradient_hn3k1"]
|
||||||
|
offsets = PackedFloat32Array(0.06315789, 0.6421053, 1)
|
||||||
|
colors = PackedColorArray(0, 0, 0, 1, 0.1, 0.1, 0.1, 1, 0.58, 0.58, 0.58, 1)
|
||||||
|
|
||||||
|
[sub_resource type="GradientTexture1D" id="GradientTexture1D_f1gjg"]
|
||||||
|
gradient = SubResource("Gradient_hn3k1")
|
||||||
|
|
||||||
|
[sub_resource type="Gradient" id="Gradient_11lcc"]
|
||||||
|
offsets = PackedFloat32Array(0.69473684, 1)
|
||||||
|
colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0)
|
||||||
|
|
||||||
|
[sub_resource type="GradientTexture1D" id="GradientTexture1D_0rysw"]
|
||||||
|
gradient = SubResource("Gradient_11lcc")
|
||||||
|
|
||||||
|
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_iwclo"]
|
||||||
|
emission_shape = 3
|
||||||
|
emission_box_extents = Vector3(1.575, 0.185, 1.465)
|
||||||
|
direction = Vector3(0, 1, 0)
|
||||||
|
spread = 0.0
|
||||||
|
initial_velocity_min = 3.0
|
||||||
|
initial_velocity_max = 5.0
|
||||||
|
gravity = Vector3(0, 0, 0)
|
||||||
|
scale_min = 0.19999999
|
||||||
|
scale_max = 0.75
|
||||||
|
color_ramp = SubResource("GradientTexture1D_0rysw")
|
||||||
|
color_initial_ramp = SubResource("GradientTexture1D_f1gjg")
|
||||||
|
|
||||||
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2vvqs"]
|
||||||
|
transparency = 1
|
||||||
|
vertex_color_use_as_albedo = true
|
||||||
|
|
||||||
|
[sub_resource type="SphereMesh" id="SphereMesh_wueys"]
|
||||||
|
material = SubResource("StandardMaterial3D_2vvqs")
|
||||||
|
|
||||||
|
[sub_resource type="BoxMesh" id="BoxMesh_hfj6b"]
|
||||||
|
|
||||||
|
[sub_resource type="BoxMesh" id="BoxMesh_hn3k1"]
|
||||||
|
|
||||||
|
[sub_resource type="BoxMesh" id="BoxMesh_11lcc"]
|
||||||
|
|
||||||
|
[sub_resource type="BoxShape3D" id="BoxShape3D_hn3k1"]
|
||||||
|
size = Vector3(4.137268, 6.5753174, 4.334961)
|
||||||
|
|
||||||
|
[node name="Tree" unique_id=713127214 instance=ExtResource("1_hn3k1")]
|
||||||
|
|
||||||
|
[node name="GPUParticles3D" type="GPUParticles3D" parent="DestroyedMesh" parent_id_path=PackedInt32Array(1889390235) index="0" unique_id=1508601722]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
amount = 1
|
||||||
|
lifetime = 0.5
|
||||||
|
speed_scale = 0.5
|
||||||
|
process_material = SubResource("ParticleProcessMaterial_iwclo")
|
||||||
|
draw_pass_1 = SubResource("SphereMesh_wueys")
|
||||||
|
|
||||||
|
[node name="Cubez" type="Node3D" parent="DestroyedMesh" parent_id_path=PackedInt32Array(1889390235) index="1" unique_id=95076974]
|
||||||
|
|
||||||
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="0" unique_id=360006017]
|
||||||
|
transform = Transform3D(-0.020582985, -0.013163342, -0.9997015, 0.53877074, -0.8424524, -2.0764832e-08, -0.84220093, -0.5386099, 0.02443221, 0, 0, 0)
|
||||||
|
mesh = SubResource("BoxMesh_hfj6b")
|
||||||
|
|
||||||
|
[node name="MeshInstance3D2" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="1" unique_id=1427047813]
|
||||||
|
transform = Transform3D(0.55269843, 0.35346538, -0.7547096, 0.53877074, -0.8424524, -2.0764832e-08, -0.6358069, -0.40661544, -0.65605897, 0, 0, 0)
|
||||||
|
mesh = SubResource("BoxMesh_hfj6b")
|
||||||
|
|
||||||
|
[node name="MeshInstance3D3" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="2" unique_id=1659669617]
|
||||||
|
transform = Transform3D(0.55269843, 0.35346538, -0.7547096, 0.53877074, -0.8424524, -2.0764832e-08, -0.6358069, -0.40661544, -0.65605897, -0.5652933, 0, -0.5979067)
|
||||||
|
mesh = SubResource("BoxMesh_hfj6b")
|
||||||
|
|
||||||
|
[node name="MeshInstance3D4" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="3" unique_id=1339180229]
|
||||||
|
transform = Transform3D(0.011722982, 0.9259946, -0.37735477, 0.35865596, 0.34837604, 0.86602545, 0.9333962, -0.14549291, -0.32802945, 0.41309977, 0, -0.7827141)
|
||||||
|
mesh = SubResource("BoxMesh_hfj6b")
|
||||||
|
|
||||||
|
[node name="MeshInstance3D5" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="4" unique_id=233543180]
|
||||||
|
transform = Transform3D(0.011722982, 0.9259946, -0.37735477, 0.35865596, 0.34837604, 0.86602545, 0.9333962, -0.14549291, -0.32802945, 0.91316706, 0, -0.43484128)
|
||||||
|
mesh = SubResource("BoxMesh_hfj6b")
|
||||||
|
|
||||||
|
[node name="MeshInstance3D6" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="5" unique_id=577523110]
|
||||||
|
transform = Transform3D(0.011722982, 0.9259946, -0.37735477, 0.35865596, 0.34837604, 0.86602545, 0.9333962, -0.14549291, -0.32802945, -0.90229505, 0, 0.19567871)
|
||||||
|
mesh = SubResource("BoxMesh_hfj6b")
|
||||||
|
|
||||||
|
[node name="MeshInstance3D7" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="6" unique_id=827181079]
|
||||||
|
transform = Transform3D(-0.4571105, 0.47059897, -0.7547096, 0.717312, 0.69675213, -2.0764832e-08, 0.5258455, -0.5413622, -0.65605897, -1.4241041, 0, -0.9131663)
|
||||||
|
mesh = SubResource("BoxMesh_hfj6b")
|
||||||
|
|
||||||
|
[node name="MeshInstance3D8" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="7" unique_id=466240924]
|
||||||
|
transform = Transform3D(0.55269843, 0.35346538, -0.7547096, 0.53877074, -0.8424524, -2.0764832e-08, -0.6358069, -0.40661544, -0.65605897, 0.5758959, 0, 0.086833715)
|
||||||
|
mesh = SubResource("BoxMesh_hfj6b")
|
||||||
|
|
||||||
|
[node name="MeshInstance3D9" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="8" unique_id=407993931]
|
||||||
|
transform = Transform3D(0.55269843, 0.35346538, -0.7547096, 0.53877074, -0.8424524, -2.0764832e-08, -0.6358069, -0.40661544, -0.65605897, 0.94551057, 0, 0.86954826)
|
||||||
|
mesh = SubResource("BoxMesh_hfj6b")
|
||||||
|
|
||||||
|
[node name="MeshInstance3D10" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="9" unique_id=1070885811]
|
||||||
|
transform = Transform3D(-0.4571105, 0.47059897, -0.7547096, 0.717312, 0.69675213, -2.0764832e-08, 0.5258455, -0.5413622, -0.65605897, -0.26117355, 0, 0.8586771)
|
||||||
|
mesh = SubResource("BoxMesh_hfj6b")
|
||||||
|
|
||||||
|
[node name="MeshInstance3D11" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="10" unique_id=479502476]
|
||||||
|
transform = Transform3D(0.55074334, -0.56699485, -0.61253464, 0.71731204, 0.6967521, 0, 0.42678478, -0.43937847, 0.7904438, -1.022146, 0, 1.0760975)
|
||||||
|
mesh = SubResource("BoxMesh_hfj6b")
|
||||||
|
|
||||||
|
[node name="MeshInstance3D12" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="11" unique_id=7305593]
|
||||||
|
transform = Transform3D(0.55074334, -0.56699485, -0.61253464, 0.71731204, 0.6967521, 0, 0.42678478, -0.43937847, 0.7904438, 0.977854, 0, -0.9239025)
|
||||||
|
mesh = SubResource("BoxMesh_hfj6b")
|
||||||
|
|
||||||
|
[node name="MeshInstance3D13" type="MeshInstance3D" parent="DestroyedMesh/Cubez" index="12" unique_id=70448867]
|
||||||
|
transform = Transform3D(-0.020582985, -0.013163342, -0.9997015, 0.53877074, -0.8424524, -2.0764832e-08, -0.84220093, -0.5386099, 0.02443221, -0.4571221, 0, -1.3370018)
|
||||||
|
mesh = SubResource("BoxMesh_hfj6b")
|
||||||
|
|
||||||
|
[node name="Shaker" parent="." index="1" unique_id=2089389922]
|
||||||
|
transform = Transform3D(0.70885205, 0, 0, 0, 0.70885205, 0, 0, 0, 0.70885205, 0, 0, 0)
|
||||||
|
|
||||||
|
[node name="Stem" type="MeshInstance3D" parent="Shaker" index="0" unique_id=156669749]
|
||||||
|
transform = Transform3D(0.70718205, -0.9436787, 0.92297167, 0.46422693, 3.5198092, -4.3827896e-08, -0.8511094, 1.1357385, 0.7668921, 0, 1.3363686, 0)
|
||||||
|
mesh = SubResource("BoxMesh_hn3k1")
|
||||||
|
|
||||||
|
[node name="Stem2" type="MeshInstance3D" parent="Shaker" index="1" unique_id=229856999]
|
||||||
|
transform = Transform3D(0.43096656, -1.1965598, 0.6871064, -0.07412759, 3.6609116, 0.33437824, -0.72888476, -1.0798028, 0.37225807, -0.637649, 3.8433223, -0.3629342)
|
||||||
|
mesh = SubResource("BoxMesh_hn3k1")
|
||||||
|
|
||||||
|
[node name="Leaves" type="MeshInstance3D" parent="Shaker" index="2" unique_id=1530775788]
|
||||||
|
transform = Transform3D(2.148287, 0.21797568, -1.0967563, 0.7066671, 1.5762988, 1.6974771, 0.86660796, -1.8257309, 1.3346244, -2.450163, 5.5032597, -1.1231996)
|
||||||
|
mesh = SubResource("BoxMesh_11lcc")
|
||||||
|
|
||||||
|
[node name="Leaves2" type="MeshInstance3D" parent="Shaker" index="3" unique_id=1147999215]
|
||||||
|
transform = Transform3D(-1.8328239, -1.5762837, 0.1470051, -0.5105396, 0.8013866, 2.2277014, -1.4985428, 1.6548818, -0.93875486, -1.4362912, 5.5032597, 0.44623435)
|
||||||
|
mesh = SubResource("BoxMesh_11lcc")
|
||||||
|
|
||||||
|
[node name="Leaves3" type="MeshInstance3D" parent="Shaker" index="4" unique_id=1274378627]
|
||||||
|
transform = Transform3D(1.0111561, -0.38601488, -2.1665826, -0.9885437, -2.209917, -0.06762316, -1.9661813, 0.91256994, -1.0802182, -0.24229479, 6.480358, -1.5169011)
|
||||||
|
mesh = SubResource("BoxMesh_11lcc")
|
||||||
|
|
||||||
|
[node name="Leaves4" type="MeshInstance3D" parent="Shaker" index="5" unique_id=1988467257]
|
||||||
|
transform = Transform3D(1.8163599, 1.086452, -1.1772779, 1.159343, 0.3368203, 2.099524, 1.1055702, -2.138153, -0.26747093, -0.8257134, 6.480358, 0.4875511)
|
||||||
|
mesh = SubResource("BoxMesh_11lcc")
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="." index="2" unique_id=370360243]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.94939756, 3.2876587, -0.28125)
|
||||||
|
shape = SubResource("BoxShape3D_hn3k1")
|
||||||
Loading…
Add table
Add a link
Reference in a new issue