diff --git a/evolve-die-repeat/molecular/assets/prey/prey-dying-frame0.png b/evolve-die-repeat/molecular/assets/prey/prey-dying-frame0.png index 986d927..64c6e6c 100644 Binary files a/evolve-die-repeat/molecular/assets/prey/prey-dying-frame0.png and b/evolve-die-repeat/molecular/assets/prey/prey-dying-frame0.png differ diff --git a/evolve-die-repeat/molecular/assets/prey/prey-dying-frame1.png b/evolve-die-repeat/molecular/assets/prey/prey-dying-frame1.png index 4581090..277ff72 100644 Binary files a/evolve-die-repeat/molecular/assets/prey/prey-dying-frame1.png and b/evolve-die-repeat/molecular/assets/prey/prey-dying-frame1.png differ diff --git a/evolve-die-repeat/molecular/assets/prey/prey-healthy-frame0.png b/evolve-die-repeat/molecular/assets/prey/prey-healthy-frame0.png index 921c229..5a3220d 100644 Binary files a/evolve-die-repeat/molecular/assets/prey/prey-healthy-frame0.png and b/evolve-die-repeat/molecular/assets/prey/prey-healthy-frame0.png differ diff --git a/evolve-die-repeat/molecular/assets/prey/prey-healthy-frame1.png b/evolve-die-repeat/molecular/assets/prey/prey-healthy-frame1.png index e93ea35..8a011c5 100644 Binary files a/evolve-die-repeat/molecular/assets/prey/prey-healthy-frame1.png and b/evolve-die-repeat/molecular/assets/prey/prey-healthy-frame1.png differ diff --git a/evolve-die-repeat/molecular/assets/prey/prey-injured-frame0.png b/evolve-die-repeat/molecular/assets/prey/prey-injured-frame0.png index 049e2d3..49c95bd 100644 Binary files a/evolve-die-repeat/molecular/assets/prey/prey-injured-frame0.png and b/evolve-die-repeat/molecular/assets/prey/prey-injured-frame0.png differ diff --git a/evolve-die-repeat/molecular/assets/prey/prey-injured-frame1.png b/evolve-die-repeat/molecular/assets/prey/prey-injured-frame1.png index ef12f2b..744f6bb 100644 Binary files a/evolve-die-repeat/molecular/assets/prey/prey-injured-frame1.png and b/evolve-die-repeat/molecular/assets/prey/prey-injured-frame1.png differ diff --git a/evolve-die-repeat/molecular/prey/nucleotide_prey.gd b/evolve-die-repeat/molecular/prey/nucleotide_prey.gd index bee6aa0..f4b8c92 100644 --- a/evolve-die-repeat/molecular/prey/nucleotide_prey.gd +++ b/evolve-die-repeat/molecular/prey/nucleotide_prey.gd @@ -26,14 +26,15 @@ func _ready() -> void: # Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta: float) -> void: +func _process(delta: float) -> void: + # smoothly rotate + if self.rotation != self.desired_rotation: # FIXME: causes the mirror sprites to flip out + self.rotation = lerp_angle(self.rotation, self.desired_rotation, clampf(4 * delta, 0, 1)) # Boundary mirroring _handle_wrapping() func _physics_process(delta: float) -> void: - # rotate smoothly - if self.rotation != self.desired_rotation: # FIXME: causes the mirror sprites to flip out - self.rotation = lerp_angle(self.rotation, self.desired_rotation, 4 * delta) + pass func move(motion: Vector3) -> void: move_and_collide(Vector2(motion.x, motion.y)) # Moves along the given vector @@ -61,7 +62,7 @@ func become_injured() -> void: mirrorSprite3.play("Injured") func _on_sight_body_entered(body: Node2D) -> void: - if body.is_in_group("predators") or body.is_in_group("player"): + if body.is_in_group("predators") or (body.is_in_group("player") and health < maxHealth): fsm.transition_to_next_state(fsm.States.FLEEING, {"threat": body}) diff --git a/evolve-die-repeat/molecular/prey/nucleotide_prey.tscn b/evolve-die-repeat/molecular/prey/nucleotide_prey.tscn index afbf4f8..23139d8 100644 --- a/evolve-die-repeat/molecular/prey/nucleotide_prey.tscn +++ b/evolve-die-repeat/molecular/prey/nucleotide_prey.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=14 format=3 uid="uid://c3iw2v3x6ngrb"] +[gd_scene format=3 uid="uid://c3iw2v3x6ngrb"] [ext_resource type="PackedScene" uid="uid://bvsdg1v3ksixy" path="res://shared/npc/prey2D.tscn" id="1_qvulj"] [ext_resource type="Script" uid="uid://bgossk6xo31gi" path="res://molecular/prey/nucleotide_prey.gd" id="2_0227s"] @@ -49,44 +49,49 @@ animations = [{ "speed": 1.0 }] -[node name="NucleotidePrey" groups=["prey"] instance=ExtResource("1_qvulj")] +[node name="NucleotidePrey" unique_id=740525631 groups=["prey"] instance=ExtResource("1_qvulj")] collision_layer = 2 motion_mode = 1 script = ExtResource("2_0227s") maxHealth = 20 -[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." index="0"] +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." index="0" unique_id=788182944] +rotation = 1.5707964 scale = Vector2(0.1, 0.1) sprite_frames = SubResource("SpriteFrames_66x8p") -animation = &"Injured" +animation = &"Healthy" -[node name="StateMachine" type="Node" parent="." index="2" node_paths=PackedStringArray("initial_state")] +[node name="CollisionPolygon2D" parent="." index="1"] +position = Vector2(6.929083, 3.0664783) +rotation = 0.474154 + +[node name="StateMachine" type="Node" parent="." index="2" unique_id=445822474 node_paths=PackedStringArray("initial_state")] script = ExtResource("9_xxtgy") initial_state = NodePath("Idle") metadata/_custom_type_script = "uid://ck7k8ht54snsy" -[node name="RandomMovement" type="Node" parent="StateMachine" index="0"] +[node name="RandomMovement" type="Node" parent="StateMachine" index="0" unique_id=1422146232] script = ExtResource("10_rgguv") -[node name="Timer" type="Timer" parent="StateMachine/RandomMovement" index="0"] +[node name="Timer" type="Timer" parent="StateMachine/RandomMovement" index="0" unique_id=593528934] one_shot = true -[node name="Fleeing" type="Node" parent="StateMachine" index="1"] +[node name="Fleeing" type="Node" parent="StateMachine" index="1" unique_id=1125485674] script = ExtResource("12_xxtgy") -[node name="Idle" type="Node" parent="StateMachine" index="2"] +[node name="Idle" type="Node" parent="StateMachine" index="2" unique_id=1424222731] script = ExtResource("12_ubfhk") metadata/_custom_type_script = "uid://co2xp7gauamql" -[node name="Timer" type="Timer" parent="StateMachine/Idle" index="0"] +[node name="Timer" type="Timer" parent="StateMachine/Idle" index="0" unique_id=1050348256] one_shot = true -[node name="Sight" type="Area2D" parent="." index="3"] +[node name="Sight" type="Area2D" parent="." index="3" unique_id=1773478588] -[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Sight" index="0"] +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Sight" index="0" unique_id=338757598] +rotation = 1.5707964 polygon = PackedVector2Array(3.8686981, -6.2705374, 7.0000973, -0.08602524, 3.5555592, 5.6287766, -3.0986624, 5.589636, -6.1517763, 0.031402588, -2.942093, -6.0748243, -29.993027, -74.37026, -11.10141, -83.6233, 9.332382, -84.00884, 35.163773, -77.06906) [connection signal="timeout" from="StateMachine/RandomMovement/Timer" to="StateMachine/RandomMovement" method="_on_timer_timeout"] [connection signal="timeout" from="StateMachine/Idle/Timer" to="StateMachine/Idle" method="_on_timer_timeout"] [connection signal="body_entered" from="Sight" to="." method="_on_sight_body_entered"] -[connection signal="body_exited" from="Sight" to="." method="_on_sight_body_exited"] diff --git a/evolve-die-repeat/molecular/prey/nucleotide_prey_idle.gd b/evolve-die-repeat/molecular/prey/nucleotide_prey_idle.gd index 9759503..5b94e1d 100644 --- a/evolve-die-repeat/molecular/prey/nucleotide_prey_idle.gd +++ b/evolve-die-repeat/molecular/prey/nucleotide_prey_idle.gd @@ -1,17 +1,19 @@ extends State @onready var timer = $Timer - +var dir = Vector3(1, 1, 0) func enter(previous_state_path: String, data := {}) -> void: timer.start((float)(randi() % 5)/5) func physics_update(_delta: float) -> void: - owner.move(Vector3(randfn(0, 1), randfn(0, 1), 0)) + owner.move(_delta * dir) + #owner.move(_delta * Vector3(randfn(0, 1), randfn(0, 1), 0)) func _on_timer_timeout() -> void: if (randi() % 4 != 0): - finished.emit(owner.fsm.States.RANDOMMOVEMENT, {}) + finished.emit(owner.fsm.States.IDLE, {}) + #finished.emit(owner.fsm.States.RANDOMMOVEMENT, {}) else: finished.emit(owner.fsm.States.IDLE, {}) diff --git a/evolve-die-repeat/project.godot b/evolve-die-repeat/project.godot index b4ca26f..7dceecd 100644 --- a/evolve-die-repeat/project.godot +++ b/evolve-die-repeat/project.godot @@ -8,11 +8,15 @@ config_version=5 +[animation] + +compatibility/default_parent_skeleton_in_mesh_instance_3d=true + [application] config/name="EvolveDieRepeat" run/main_scene="uid://drgv154ei1vrl" -config/features=PackedStringArray("4.5", "Forward Plus") +config/features=PackedStringArray("4.6", "Forward Plus") config/icon="res://icon.svg" [autoload]