diff --git a/Scenes/Test Scene.tscn b/Scenes/Test Scene.tscn index f090b43..cd09feb 100644 --- a/Scenes/Test Scene.tscn +++ b/Scenes/Test Scene.tscn @@ -1,14 +1,32 @@ -[gd_scene load_steps=7 format=3 uid="uid://bvo0wgi38gdo0"] +[gd_scene load_steps=8 format=3 uid="uid://yitiyfwr4txh"] [ext_resource type="TileSet" uid="uid://bf1eb4aogv8ru" path="res://Assets/Tilesets/colony.tres" id="2"] [ext_resource type="Texture2D" uid="uid://dp4tdg3fxe5bf" path="res://Assets/Textures/color_cube.png" id="2_0flm2"] -[ext_resource type="Script" path="res://Scripts/Player/PlayerMovement.gd" id="2_gw00d"] +[ext_resource type="Script" path="res://Scripts/Player/PlayerController.gd" id="2_pk6k4"] [ext_resource type="Texture2D" uid="uid://dx5k5qa1pwbfl" path="res://Assets/Textures/basic_enemy.png" id="4_4sn7h"] -[ext_resource type="Script" path="res://Scripts/Enemy/EnemyLook.gd" id="5_k7y3d"] +[ext_resource type="Script" path="res://Scripts/Enemy/EnemyController.gd" id="5_5xgcv"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_m15tu"] size = Vector2(5, 5) +[sub_resource type="GDScript" id="GDScript_xkf0t"] +script/source = "extends Node +enum STATES { + Partroling, + Targeting +} +@export var sees := STATES.Partroling + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta): + pass +" + [node name="Test Scene" type="Node2D"] [node name="TileMap" type="TileMap" parent="."] @@ -22,7 +40,7 @@ layer_0/tile_data = PackedInt32Array(1114138, 262144, 1, 1048602, 0, 1, 983066, [node name="Player" type="CharacterBody2D" parent="."] position = Vector2(203, 60) collision_layer = 2 -script = ExtResource("2_gw00d") +script = ExtResource("2_pk6k4") speed = 100 [node name="Sprite2D" type="Sprite2D" parent="Player"] @@ -39,16 +57,17 @@ editor_draw_drag_margin = true [node name="CollisionShape2D" type="CollisionShape2D" parent="Player"] shape = SubResource("RectangleShape2D_m15tu") -[node name="Sprite2D" type="Sprite2D" parent="." node_paths=PackedStringArray("ray")] +[node name="Enemy" type="Sprite2D" parent="." node_paths=PackedStringArray("ray")] z_index = 1 position = Vector2(237, 46) rotation = 2.04581 texture = ExtResource("4_4sn7h") -script = ExtResource("5_k7y3d") +script = ExtResource("5_5xgcv") ray = NodePath("RayCast2D") debug_vision = true -[node name="RayCast2D" type="RayCast2D" parent="Sprite2D"] +[node name="RayCast2D" type="RayCast2D" parent="Enemy"] target_position = Vector2(15, 0) collision_mask = 3 hit_from_inside = true +script = SubResource("GDScript_xkf0t") diff --git a/Scripts/Enemy/EnemyLook.gd b/Scripts/Enemy/EnemyController.gd similarity index 95% rename from Scripts/Enemy/EnemyLook.gd rename to Scripts/Enemy/EnemyController.gd index 2edf67a..37167bc 100644 --- a/Scripts/Enemy/EnemyLook.gd +++ b/Scripts/Enemy/EnemyController.gd @@ -12,7 +12,12 @@ extends Node2D @export_range(0, 72) var sweeping_steps : int = 24 @export var debug_vision := false -var sees_player : bool +enum STATES { + IDLE, + TARGETING +} + +var state : STATES # Only used for Debugging purposes right now var player_positions : Array @@ -62,9 +67,9 @@ func look_at_player(delta : float): # If The Player cant be seen, return and do nothing if hit_angles.size() <= 0: - sees_player = false + state = STATES.IDLE return - sees_player = true + state = STATES.TARGETING # Calculate Average Angle Of Player var average_angle : float @@ -94,7 +99,7 @@ func _draw(): self.draw_arc(Vector2(), max_view_distance, deg_to_rad(-angle_cone_of_vision / 2), deg_to_rad(angle_cone_of_vision / 2), sweeping_steps + 1, Color.RED, 0.5, false) # Draw A Circle Around the Player if hes seen - if sees_player: + if state == STATES.TARGETING: for pos in player_positions: self.draw_circle(pos, 4, Color.ORANGE_RED) queue_redraw() diff --git a/Scripts/Player/PlayerMovement.gd b/Scripts/Player/PlayerController.gd similarity index 100% rename from Scripts/Player/PlayerMovement.gd rename to Scripts/Player/PlayerController.gd