From bdbffd0799fad7e11457d22754e8d4848e3079f9 Mon Sep 17 00:00:00 2001 From: Daydreel Date: Thu, 27 Mar 2025 09:54:36 +0100 Subject: [PATCH] build tower --- project.godot | 8 +++++++ world.gd | 61 +++++++++++++++++++++++++++++++-------------------- world.tscn | 6 +---- 3 files changed, 46 insertions(+), 29 deletions(-) diff --git a/project.godot b/project.godot index 6358c05..b25c186 100644 --- a/project.godot +++ b/project.godot @@ -31,3 +31,11 @@ folder_colors={ "res://Waves/": "pink", "res://enemies/": "orange" } + +[input] + +build={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(344, 20),"global_position":Vector2(353, 68),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} diff --git a/world.gd b/world.gd index 3f844af..bd42ec0 100644 --- a/world.gd +++ b/world.gd @@ -1,32 +1,45 @@ extends Node3D +@onready var tower_blueprint = preload("res://Towers/tower.tscn") + @onready var cam : Camera3D = $Camera3D -#@onready var selector : Node3D = $Selector +@onready var selector : Node3D = $Selector -func _ready() -> void: - $Spawner.spawn_next_wave() +#func _ready() -> void: + #$Spawner.spawn_next_wave() -#func _process(delta: float) -> void: - #handle_player_controls() +func _process(delta: float) -> void: + handle_player_controls() + if Input.is_action_just_pressed("build"): + build_tower(tower_blueprint) -#func handle_player_controls() -> void: - #var space_state : PhysicsDirectSpaceState3D = get_world_3d().direct_space_state - #var mouse_pos : Vector2 = get_viewport().get_mouse_position() - # - #var origin : Vector3 = cam.project_ray_origin(mouse_pos) - #var end : Vector3 = origin + cam.project_ray_normal(mouse_pos) * 100 - #var ray : PhysicsRayQueryParameters3D = PhysicsRayQueryParameters3D.create(origin, end) - #ray.collide_with_bodies = true - # - #var ray_result : Dictionary = space_state.intersect_ray(ray) - # - #if ray_result.is_empty(): - #selector.visible = false - #return - # - #selector.visible = true - #var collider : CollisionObject3D = ray_result.get("collider") - #selector.global_position = collider.global_position - #selector.global_position += Vector3(0.0,0.2,0.0) +func handle_player_controls() -> void: + var space_state : PhysicsDirectSpaceState3D = get_world_3d().direct_space_state + var mouse_pos : Vector2 = get_viewport().get_mouse_position() + + var origin : Vector3 = cam.project_ray_origin(mouse_pos) + var end : Vector3 = origin + cam.project_ray_normal(mouse_pos) * 100 + var ray : PhysicsRayQueryParameters3D = PhysicsRayQueryParameters3D.create(origin, end) + ray.collide_with_bodies = true + + var ray_result : Dictionary = space_state.intersect_ray(ray) + + if ray_result.is_empty(): + selector.visible = false + return + + selector.visible = true + var collider : CollisionObject3D = ray_result.get("collider") + selector.global_position = collider.global_position + selector.global_position += Vector3(0.0,0.2,0.0) + + +func build_tower(scene : PackedScene) -> void: + if !selector.visible: + return + + var temp_cannon : Tower = scene.instantiate() + add_child(temp_cannon) + temp_cannon.global_position = selector.global_position diff --git a/world.tscn b/world.tscn index edfd693..928af9c 100644 --- a/world.tscn +++ b/world.tscn @@ -1,11 +1,10 @@ -[gd_scene load_steps=12 format=3 uid="uid://ky0uewndeuwv"] +[gd_scene load_steps=11 format=3 uid="uid://ky0uewndeuwv"] [ext_resource type="Script" uid="uid://qqid42jkpkmv" path="res://world.gd" id="1_fj7yv"] [ext_resource type="PackedScene" uid="uid://d1f6m15niwgt" path="res://Tiles/tile.tscn" id="3_aqk2v"] [ext_resource type="PackedScene" uid="uid://d17sleiqkdoo2" path="res://Assets/GLB format/selection-a.glb" id="3_tlwt5"] [ext_resource type="PackedScene" uid="uid://do7gm1gjhu1t5" path="res://Tiles/road.tscn" id="4_036b0"] [ext_resource type="Script" uid="uid://tpon511km4al" path="res://spawner.gd" id="5_036b0"] -[ext_resource type="PackedScene" uid="uid://trg7ag3dqr2l" path="res://Towers/tower.tscn" id="6_dwbse"] [ext_resource type="Script" uid="uid://chu8s12rtdeqx" path="res://Scripts/Wave.gd" id="6_gbfbk"] [ext_resource type="Resource" uid="uid://dkbuy7fetnihs" path="res://Waves/wave_1.tres" id="7_ioo17"] [ext_resource type="Resource" uid="uid://dvw6vm3vbpmdl" path="res://Waves/wave_2.tres" id="8_wse8f"] @@ -153,7 +152,4 @@ environment = SubResource("Environment_036b0") transform = Transform3D(1, 0, 0, 0, 0.258819, 0.965926, 0, -0.965926, 0.258819, 0, 4, 6) light_color = Color(0.823308, 0.863845, 0.742102, 1) -[node name="Tower" parent="." instance=ExtResource("6_dwbse")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.90244, 0, -0.479361) - [connection signal="timeout" from="Spawner/SpawnTimer" to="Spawner" method="_on_spawn_timer_timeout"]