diff --git a/Babushka.sln.DotSettings.user b/Babushka.sln.DotSettings.user index 4e7cbcc..aa9f6ba 100644 --- a/Babushka.sln.DotSettings.user +++ b/Babushka.sln.DotSettings.user @@ -2,4 +2,5 @@ ForceIncluded ForceIncluded ForceIncluded + ForceIncluded ForceIncluded \ No newline at end of file diff --git a/prefabs/farm/duck.tscn b/prefabs/farm/duck.tscn index 3dc5cba..2ea7d8d 100644 --- a/prefabs/farm/duck.tscn +++ b/prefabs/farm/duck.tscn @@ -43,7 +43,7 @@ _data = { &"new_animation": SubResource("Animation_kjie1") } -[node name="Duck" type="Node2D" node_paths=PackedStringArray("_characterBody", "_nakNakAudio", "_wingFlapAudio")] +[node name="Duck" type="Node2D" node_paths=PackedStringArray("_characterBody", "_nakNakAudio", "_wingFlapAudio", "_duckRight", "_duckLeft")] script = ExtResource("2_nm4n7") _characterBody = NodePath("CharacterBody2D") _nakNakAudio = NodePath("Audio/NakNak") @@ -51,59 +51,244 @@ _wingFlapAudio = NodePath("Audio/WingFlutter") _runningSpeed = 3000.0 _slowSpeed = 500.0 _minDistanceToVesna = 1500.0 +_duckRight = NodePath("CharacterBody2D/bodyLookingRight") +_duckLeft = NodePath("CharacterBody2D/bodyLookingLeft") [node name="CharacterBody2D" type="CharacterBody2D" parent="."] +position = Vector2(0, -535) collision_mask = 7 [node name="CollisionShape2D" type="CollisionShape2D" parent="CharacterBody2D"] +z_index = 1 +y_sort_enabled = true position = Vector2(0, 295) shape = SubResource("CircleShape2D_nb25w") -[node name="body" type="Node2D" parent="CharacterBody2D"] +[node name="bodyLookingRight" type="Node2D" parent="CharacterBody2D"] +z_index = 1 +y_sort_enabled = true +position = Vector2(-5, -2) +rotation = 0.0135349 + +[node name="head" type="Sprite2D" parent="CharacterBody2D/bodyLookingRight"] +z_index = 1 +y_sort_enabled = true +position = Vector2(46.9624, 76.1606) +rotation = 0.284615 +scale = Vector2(1, 0.997) +skew = 0.024546 +texture = ExtResource("1_cgxhx") +offset = Vector2(25.2328, -23.0689) +region_enabled = true +region_rect = Rect2(45, 24, 87, 82) + +[node name="beak upper" type="Sprite2D" parent="CharacterBody2D/bodyLookingRight/head"] +z_index = 1 +y_sort_enabled = true +position = Vector2(50.669, -7.16257) +rotation = -0.0427724 +scale = Vector2(0.62715, 0.62715) +texture = ExtResource("1_cgxhx") +offset = Vector2(57.1263, -7.47815) +region_enabled = true +region_rect = Rect2(292, 37, 152, 98) + +[node name="beak lower" type="Sprite2D" parent="CharacterBody2D/bodyLookingRight/head"] +z_index = 1 +y_sort_enabled = true +position = Vector2(47.9076, -15.7341) +rotation = 0.0364142 +scale = Vector2(0.58615, 0.58615) +texture = ExtResource("1_cgxhx") +offset = Vector2(60.4601, 37.8134) +region_enabled = true +region_rect = Rect2(295, 170, 145, 39) + +[node name="torso" type="Sprite2D" parent="CharacterBody2D/bodyLookingRight"] +z_index = 1 +y_sort_enabled = true +position = Vector2(5.90997, 355.352) +scale = Vector2(1.07526, 1.01724) +texture = ExtResource("1_cgxhx") +offset = Vector2(2.87376, -131.092) +region_enabled = true +region_rect = Rect2(30, 168, 125, 326) + +[node name="wingR" type="Sprite2D" parent="CharacterBody2D/bodyLookingRight"] +z_index = 1 +y_sort_enabled = true +position = Vector2(-28, 262) +rotation = -0.371117 +texture = ExtResource("1_cgxhx") +offset = Vector2(-50, 50) +region_enabled = true +region_rect = Rect2(196, 231, 180, 164) + +[node name="wingL" type="Sprite2D" parent="CharacterBody2D/bodyLookingRight"] +z_index = 1 +y_sort_enabled = true +position = Vector2(47.0695, 245.905) +rotation = -0.0925884 +scale = Vector2(1.31536, 1.25948) +skew = -0.0345086 +texture = ExtResource("1_cgxhx") +offset = Vector2(-59.5924, 55.37) +region_enabled = true +region_rect = Rect2(196, 231, 180, 164) + +[node name="underbelly" type="Sprite2D" parent="CharacterBody2D/bodyLookingRight"] +z_index = 1 +y_sort_enabled = true +position = Vector2(-11.4038, 439.203) +rotation = -2.98225 +scale = Vector2(0.672245, 0.955267) +skew = 0.0185422 +texture = ExtResource("1_cgxhx") +offset = Vector2(26.4135, 70.6083) +region_enabled = true +region_rect = Rect2(196, 231, 180, 164) + +[node name="leg left" type="Sprite2D" parent="CharacterBody2D/bodyLookingRight"] +position = Vector2(36.2887, 300.645) +rotation = 2.42655 +scale = Vector2(1.05221, 1.04106) +skew = -0.0544101 +texture = ExtResource("1_cgxhx") +region_enabled = true +region_rect = Rect2(196, 231, 177, 161) + +[node name="left thigh" type="Sprite2D" parent="CharacterBody2D/bodyLookingRight/leg left"] +z_index = 1 +y_sort_enabled = true +position = Vector2(73.353, -69.771) +rotation = -2.57238 +scale = Vector2(0.651005, 0.688137) +texture = ExtResource("1_cgxhx") +region_enabled = true +region_rect = Rect2(368, 263, 81, 89) + +[node name="left shin" type="Sprite2D" parent="CharacterBody2D/bodyLookingRight/leg left/left thigh"] +z_index = 1 +y_sort_enabled = true +position = Vector2(-5.71882, 19.9984) +rotation = 2.69159 +scale = Vector2(0.88169, 0.852516) +skew = -0.0440769 +texture = ExtResource("1_cgxhx") +offset = Vector2(10, -50) +region_enabled = true +region_rect = Rect2(360, 361, 68, 126) + +[node name="left foot" type="Sprite2D" parent="CharacterBody2D/bodyLookingRight/leg left/left thigh/left shin"] +z_index = 1 +y_sort_enabled = true +position = Vector2(15.1289, -77.6075) +rotation = -2.65268 +scale = Vector2(1.12319, 1.12319) +texture = ExtResource("1_cgxhx") +offset = Vector2(40, 40) +region_enabled = true +region_rect = Rect2(246, 393, 111, 111) + +[node name="right leg" type="Sprite2D" parent="CharacterBody2D/bodyLookingRight"] +z_index = 1 +y_sort_enabled = true +position = Vector2(-24, 364) +rotation = -0.463741 +scale = Vector2(1.07492, 1.01762) +texture = ExtResource("1_cgxhx") +region_enabled = true +region_rect = Rect2(196, 231, 177, 161) + +[node name="right thigh" type="Sprite2D" parent="CharacterBody2D/bodyLookingRight/right leg"] +z_index = 1 +y_sort_enabled = true +position = Vector2(-29.7603, 44.2374) +rotation = 0.249342 +scale = Vector2(0.625107, 0.655894) +skew = 0.02161 +texture = ExtResource("1_cgxhx") +region_enabled = true +region_rect = Rect2(368, 263, 81, 89) + +[node name="right shin" type="Sprite2D" parent="CharacterBody2D/bodyLookingRight/right leg/right thigh"] +z_index = 1 +y_sort_enabled = true +position = Vector2(-2.78734, 11.5692) +rotation = 0.0689206 +scale = Vector2(1.12016, 1.07128) +skew = -0.0877244 +texture = ExtResource("1_cgxhx") +offset = Vector2(-14.163, 37.0936) +region_enabled = true +region_rect = Rect2(360, 361, 68, 126) + +[node name="right foot" type="Sprite2D" parent="CharacterBody2D/bodyLookingRight/right leg/right thigh/right shin"] +z_index = 1 +y_sort_enabled = true +position = Vector2(-20.0986, 67.7507) +rotation = 0.14855 +scale = Vector2(1.212, 1.212) +texture = ExtResource("1_cgxhx") +offset = Vector2(40, 40) +region_enabled = true +region_rect = Rect2(246, 393, 111, 111) + +[node name="bodyLookingLeft" type="Node2D" parent="CharacterBody2D"] +visible = false +z_index = 1 +y_sort_enabled = true position = Vector2(-5, -2) rotation = 0.0135349 -scale = Vector2(1, 1) +scale = Vector2(-1, 1) -[node name="head" type="Sprite2D" parent="CharacterBody2D/body"] -position = Vector2(45.8677, 58.5043) -rotation = 0.229125 +[node name="head" type="Sprite2D" parent="CharacterBody2D/bodyLookingLeft"] +z_index = 1 +y_sort_enabled = true +position = Vector2(46.9624, 76.1606) +rotation = 0.284615 scale = Vector2(1, 0.997) -skew = 0.0245461 +skew = 0.024546 texture = ExtResource("1_cgxhx") -offset = Vector2(30.7251, -6.0665) +offset = Vector2(25.2328, -23.0689) region_enabled = true region_rect = Rect2(45, 24, 87, 82) -[node name="beak upper" type="Sprite2D" parent="CharacterBody2D/body/head"] +[node name="beak upper" type="Sprite2D" parent="CharacterBody2D/bodyLookingLeft/head"] z_index = 1 y_sort_enabled = true -position = Vector2(64.9248, 6.88336) -rotation = -0.0372987 +position = Vector2(50.669, -7.16257) +rotation = -0.0427724 scale = Vector2(0.62715, 0.62715) texture = ExtResource("1_cgxhx") -offset = Vector2(50, 0) +offset = Vector2(57.1263, -7.47815) region_enabled = true region_rect = Rect2(292, 37, 152, 98) -[node name="beak lower" type="Sprite2D" parent="CharacterBody2D/body/head"] +[node name="beak lower" type="Sprite2D" parent="CharacterBody2D/bodyLookingLeft/head"] +z_index = 1 y_sort_enabled = true -position = Vector2(63.0698, 25.5667) -rotation = 0.0418879 +position = Vector2(47.9076, -15.7341) +rotation = 0.0364142 scale = Vector2(0.58615, 0.58615) texture = ExtResource("1_cgxhx") -offset = Vector2(50, 0) +offset = Vector2(60.4601, 37.8134) region_enabled = true region_rect = Rect2(295, 170, 145, 39) -[node name="torso" type="Sprite2D" parent="CharacterBody2D/body"] -position = Vector2(-3, 244) +[node name="torso" type="Sprite2D" parent="CharacterBody2D/bodyLookingLeft"] +z_index = 1 +y_sort_enabled = true +position = Vector2(5.90997, 355.352) scale = Vector2(1.07526, 1.01724) texture = ExtResource("1_cgxhx") -offset = Vector2(11.1601, -21.6271) +offset = Vector2(2.87376, -131.092) region_enabled = true region_rect = Rect2(30, 168, 125, 326) -[node name="wingR" type="Sprite2D" parent="CharacterBody2D/body"] +[node name="wingR" type="Sprite2D" parent="CharacterBody2D/bodyLookingLeft"] +z_index = 1 +y_sort_enabled = true position = Vector2(-28, 262) rotation = -0.371117 texture = ExtResource("1_cgxhx") @@ -111,35 +296,42 @@ offset = Vector2(-50, 50) region_enabled = true region_rect = Rect2(196, 231, 180, 164) -[node name="wingL" type="Sprite2D" parent="CharacterBody2D/body"] +[node name="wingL" type="Sprite2D" parent="CharacterBody2D/bodyLookingLeft"] +z_index = 1 +y_sort_enabled = true position = Vector2(47.0695, 245.905) rotation = -0.0925884 scale = Vector2(1.31536, 1.25948) -skew = -0.0345085 +skew = -0.0345086 texture = ExtResource("1_cgxhx") offset = Vector2(-59.5924, 55.37) region_enabled = true region_rect = Rect2(196, 231, 180, 164) -[node name="underbelly" type="Sprite2D" parent="CharacterBody2D/body"] -position = Vector2(-17, 370) -rotation = -2.94251 -scale = Vector2(0.748, 1.565) -skew = 0.0226374 +[node name="underbelly" type="Sprite2D" parent="CharacterBody2D/bodyLookingLeft"] +z_index = 1 +y_sort_enabled = true +position = Vector2(-11.4038, 439.203) +rotation = -2.98225 +scale = Vector2(0.672245, 0.955267) +skew = 0.0185422 texture = ExtResource("1_cgxhx") +offset = Vector2(26.4135, 70.6083) region_enabled = true region_rect = Rect2(196, 231, 180, 164) -[node name="leg left" type="Sprite2D" parent="CharacterBody2D/body"] +[node name="leg left" type="Sprite2D" parent="CharacterBody2D/bodyLookingLeft"] position = Vector2(36.2887, 300.645) rotation = 2.42655 scale = Vector2(1.05221, 1.04106) -skew = -0.0544099 +skew = -0.0544101 texture = ExtResource("1_cgxhx") region_enabled = true region_rect = Rect2(196, 231, 177, 161) -[node name="left thigh" type="Sprite2D" parent="CharacterBody2D/body/leg left"] +[node name="left thigh" type="Sprite2D" parent="CharacterBody2D/bodyLookingLeft/leg left"] +z_index = 1 +y_sort_enabled = true position = Vector2(73.353, -69.771) rotation = -2.57238 scale = Vector2(0.651005, 0.688137) @@ -147,7 +339,9 @@ texture = ExtResource("1_cgxhx") region_enabled = true region_rect = Rect2(368, 263, 81, 89) -[node name="left shin" type="Sprite2D" parent="CharacterBody2D/body/leg left/left thigh"] +[node name="left shin" type="Sprite2D" parent="CharacterBody2D/bodyLookingLeft/leg left/left thigh"] +z_index = 1 +y_sort_enabled = true position = Vector2(-5.71882, 19.9984) rotation = 2.69159 scale = Vector2(0.88169, 0.852516) @@ -157,7 +351,9 @@ offset = Vector2(10, -50) region_enabled = true region_rect = Rect2(360, 361, 68, 126) -[node name="left foot" type="Sprite2D" parent="CharacterBody2D/body/leg left/left thigh/left shin"] +[node name="left foot" type="Sprite2D" parent="CharacterBody2D/bodyLookingLeft/leg left/left thigh/left shin"] +z_index = 1 +y_sort_enabled = true position = Vector2(15.1289, -77.6075) rotation = -2.65268 scale = Vector2(1.12319, 1.12319) @@ -166,7 +362,9 @@ offset = Vector2(40, 40) region_enabled = true region_rect = Rect2(246, 393, 111, 111) -[node name="right leg" type="Sprite2D" parent="CharacterBody2D/body"] +[node name="right leg" type="Sprite2D" parent="CharacterBody2D/bodyLookingLeft"] +z_index = 1 +y_sort_enabled = true position = Vector2(-24, 364) rotation = -0.463741 scale = Vector2(1.07492, 1.01762) @@ -174,7 +372,9 @@ texture = ExtResource("1_cgxhx") region_enabled = true region_rect = Rect2(196, 231, 177, 161) -[node name="right thigh" type="Sprite2D" parent="CharacterBody2D/body/right leg"] +[node name="right thigh" type="Sprite2D" parent="CharacterBody2D/bodyLookingLeft/right leg"] +z_index = 1 +y_sort_enabled = true position = Vector2(-29.7603, 44.2374) rotation = 0.249342 scale = Vector2(0.625107, 0.655894) @@ -183,7 +383,9 @@ texture = ExtResource("1_cgxhx") region_enabled = true region_rect = Rect2(368, 263, 81, 89) -[node name="right shin" type="Sprite2D" parent="CharacterBody2D/body/right leg/right thigh"] +[node name="right shin" type="Sprite2D" parent="CharacterBody2D/bodyLookingLeft/right leg/right thigh"] +z_index = 1 +y_sort_enabled = true position = Vector2(-2.78734, 11.5692) rotation = 0.0689206 scale = Vector2(1.12016, 1.07128) @@ -193,7 +395,9 @@ offset = Vector2(-14.163, 37.0936) region_enabled = true region_rect = Rect2(360, 361, 68, 126) -[node name="right foot" type="Sprite2D" parent="CharacterBody2D/body/right leg/right thigh/right shin"] +[node name="right foot" type="Sprite2D" parent="CharacterBody2D/bodyLookingLeft/right leg/right thigh/right shin"] +z_index = 1 +y_sort_enabled = true position = Vector2(-20.0986, 67.7507) rotation = 0.14855 scale = Vector2(1.212, 1.212) diff --git a/scenes/Babushka_scene_farm_outside_2d.tscn b/scenes/Babushka_scene_farm_outside_2d.tscn index f00eaae..a9fcd46 100644 --- a/scenes/Babushka_scene_farm_outside_2d.tscn +++ b/scenes/Babushka_scene_farm_outside_2d.tscn @@ -2097,6 +2097,15 @@ collision_mask = 4 position = Vector2(1.75458, 76) shape = SubResource("RectangleShape2D_2vojv") +[node name="Duck2" parent="YSorted" node_paths=PackedStringArray("_vesna") instance=ExtResource("62_i36hd")] +z_index = 1 +y_sort_enabled = true +position = Vector2(4374, 2652) +_vesna = NodePath("../Vesna/CharacterBody2D") +_runningSpeed = 2000.0 +_slowSpeed = 1000.0 +_minDistanceToVesna = 500.0 + [node name="CanvasLayer" parent="." instance=ExtResource("32_2nee2")] [node name="Inventory" parent="CanvasLayer" index="1"] @@ -2170,58 +2179,6 @@ max_distance = 2e+07 playback_type = 2 script = ExtResource("40_w3jkj") -[node name="Duck3" parent="." node_paths=PackedStringArray("_vesna") instance=ExtResource("62_i36hd")] -position = Vector2(1875, 2155) -_vesna = NodePath("../YSorted/Vesna/CharacterBody2D") - -[node name="Duck4" parent="." node_paths=PackedStringArray("_vesna") instance=ExtResource("62_i36hd")] -position = Vector2(1496, 2816) -_vesna = NodePath("../YSorted/Vesna/CharacterBody2D") - -[node name="Duck5" parent="." node_paths=PackedStringArray("_vesna") instance=ExtResource("62_i36hd")] -position = Vector2(4616, 2187) -_vesna = NodePath("../YSorted/Vesna/CharacterBody2D") - -[node name="Duck6" parent="." node_paths=PackedStringArray("_vesna") instance=ExtResource("62_i36hd")] -position = Vector2(867, 2144) -_vesna = NodePath("../YSorted/Vesna/CharacterBody2D") - -[node name="Duck7" parent="." node_paths=PackedStringArray("_vesna") instance=ExtResource("62_i36hd")] -position = Vector2(488, 2718) -_vesna = NodePath("../YSorted/Vesna/CharacterBody2D") - -[node name="Duck10" parent="." node_paths=PackedStringArray("_vesna") instance=ExtResource("62_i36hd")] -position = Vector2(5201, 2708) -_vesna = NodePath("../YSorted/Vesna/CharacterBody2D") - -[node name="Duck11" parent="." node_paths=PackedStringArray("_vesna") instance=ExtResource("62_i36hd")] -position = Vector2(1235, 2458) -_vesna = NodePath("../YSorted/Vesna/CharacterBody2D") - -[node name="Duck12" parent="." node_paths=PackedStringArray("_vesna") instance=ExtResource("62_i36hd")] -position = Vector2(2146, 2794) -_vesna = NodePath("../YSorted/Vesna/CharacterBody2D") - -[node name="Duck13" parent="." node_paths=PackedStringArray("_vesna") instance=ExtResource("62_i36hd")] -position = Vector2(3587, 3119) -_vesna = NodePath("../YSorted/Vesna/CharacterBody2D") - -[node name="Duck14" parent="." node_paths=PackedStringArray("_vesna") instance=ExtResource("62_i36hd")] -position = Vector2(4757, 2686) -_vesna = NodePath("../YSorted/Vesna/CharacterBody2D") - -[node name="Duck15" parent="." node_paths=PackedStringArray("_vesna") instance=ExtResource("62_i36hd")] -position = Vector2(4908, 3206) -_vesna = NodePath("../YSorted/Vesna/CharacterBody2D") - -[node name="Duck" parent="." node_paths=PackedStringArray("_vesna") instance=ExtResource("62_i36hd")] -position = Vector2(2517, 2417) -_vesna = NodePath("../YSorted/Vesna/CharacterBody2D") - -[node name="Duck2" parent="." node_paths=PackedStringArray("_vesna") instance=ExtResource("62_i36hd")] -position = Vector2(3540, 2518) -_vesna = NodePath("../YSorted/Vesna/CharacterBody2D") - [node name="PenCollider" type="Area2D" parent="."] script = ExtResource("63_uxa2m") diff --git a/scripts/CSharp/Common/Animation/Duck.cs b/scripts/CSharp/Common/Animation/Duck.cs index 9b35fa5..008722a 100644 --- a/scripts/CSharp/Common/Animation/Duck.cs +++ b/scripts/CSharp/Common/Animation/Duck.cs @@ -1,4 +1,3 @@ -using System; using Godot; namespace Babushka.scripts.CSharp.Common.Animation; @@ -9,15 +8,18 @@ public partial class Duck : Node2D [Export] private AudioPlayer _nakNakAudio; [Export] private AudioPlayer _wingFlapAudio; [Export] private Node2D _vesna; - [Export] private float _runningSpeed = 5f; - [Export] private float _slowSpeed = 1f; + [Export] private float _runningSpeed = 3f; + [Export] private float _slowSpeed = 0.5f; [Export] private float _minDistanceToVesna = 1000f; + [Export] private Node2D _duckRight; + [Export] private Node2D _duckLeft; private bool _vesnaInReach = false; private bool _penEntered = false; - private Vector2 _lastDirection = Vector2.Up; private int _numberOfFramesPerDirection = 1000; private int _currentFramesThisDirection = 0; + private bool _duckLookingRight = true; + private Vector2 _movementVector = Vector2.Zero; public void PenEntered() @@ -26,6 +28,11 @@ public partial class Duck : Node2D _penEntered = true; } + public override void _Draw() + { + DrawLine(_characterBody.GlobalPosition, _movementVector, new Color(255, 0, 0), 2f, false); + } + public override void _Process(double delta) { if (_penEntered) @@ -40,33 +47,42 @@ public partial class Duck : Node2D if (currentDistance < _minDistanceToVesna) { - _characterBody.Velocity = new Vector2( _characterBody.GlobalPosition.X - _vesna.GlobalPosition.X, + _movementVector = new Vector2( _characterBody.GlobalPosition.X - _vesna.GlobalPosition.X, _characterBody.GlobalPosition.Y - _vesna.GlobalPosition.Y).Normalized(); - _characterBody.Velocity *= _runningSpeed; + _movementVector *= _runningSpeed; + _characterBody.Velocity = _movementVector; _characterBody.MoveAndSlide(); - // todo: Add noise! } else { if (_currentFramesThisDirection >= _numberOfFramesPerDirection) { _currentFramesThisDirection = 0; - Random random = new Random(); - _lastDirection = new Vector2(random.NextSingle(), random.NextSingle()).Normalized(); + FastNoiseLite fastNoiseLite = new FastNoiseLite(); + _movementVector = new Vector2(fastNoiseLite.GetNoise1D(_characterBody.GlobalPosition.X * Time.GetTicksMsec()), fastNoiseLite.GetNoise1D(_characterBody.GlobalPosition.Y * Time.GetTicksMsec())).Normalized(); } _currentFramesThisDirection++; - _characterBody.Velocity = _lastDirection * _slowSpeed; + _characterBody.Velocity = _movementVector * _slowSpeed; _characterBody.MoveAndSlide(); } - /* - if (_characterBody.Velocity.X < 0 && _characterBody.Scale.X > 0) + // if läuftNachLinks && schautNachRechts || läuftNachRechts && schautNachLinks + if ((_characterBody.Velocity.X < 0 && _duckLookingRight) + || (_characterBody.Velocity.X > 0 && !_duckLookingRight)) { - _characterBody.Scale = new Vector2(_characterBody.Scale.X * (-1), _characterBody.Scale.Y); + if (_duckLookingRight) + { + _duckRight.Visible = false; + _duckLeft.Visible = true; + _duckLookingRight = false; + } + else + { + _duckRight.Visible = true; + _duckLeft.Visible = false; + _duckLookingRight = true; + } } - */ - - base._Process(delta); } } \ No newline at end of file