WIP duck pushing behaviour

feature/fight_system
kziolkowski 6 months ago
parent ebc3ee9cf9
commit 9e97cc3b80

@ -1,4 +1,4 @@
[gd_scene load_steps=18 format=3 uid="uid://muuxxgvx33fp"] [gd_scene load_steps=20 format=3 uid="uid://muuxxgvx33fp"]
[ext_resource type="Texture2D" uid="uid://hvchk6t0xe7j" path="res://art/animals/Ente.png" id="1_cgxhx"] [ext_resource type="Texture2D" uid="uid://hvchk6t0xe7j" path="res://art/animals/Ente.png" id="1_cgxhx"]
[ext_resource type="Script" uid="uid://c4qxtuym7syjc" path="res://scripts/CSharp/Common/Animation/Duck.cs" id="2_nm4n7"] [ext_resource type="Script" uid="uid://c4qxtuym7syjc" path="res://scripts/CSharp/Common/Animation/Duck.cs" id="2_nm4n7"]
@ -35,11 +35,22 @@ stream_4/stream = ExtResource("12_dx1yn")
stream_5/stream = ExtResource("13_yuxo7") stream_5/stream = ExtResource("13_yuxo7")
stream_6/stream = ExtResource("14_xhefb") stream_6/stream = ExtResource("14_xhefb")
[sub_resource type="Animation" id="Animation_kjie1"]
resource_name = "new_animation"
[sub_resource type="AnimationLibrary" id="AnimationLibrary_54k4r"]
_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")]
script = ExtResource("2_nm4n7") script = ExtResource("2_nm4n7")
_characterBody = NodePath("CharacterBody2D") _characterBody = NodePath("CharacterBody2D")
_nakNakAudio = NodePath("Audio/NakNak") _nakNakAudio = NodePath("Audio/NakNak")
_wingFlapAudio = NodePath("Audio/WingFlutter") _wingFlapAudio = NodePath("Audio/WingFlutter")
_runningSpeed = 3000.0
_slowSpeed = 500.0
_minDistanceToVesna = 1500.0
[node name="CharacterBody2D" type="CharacterBody2D" parent="."] [node name="CharacterBody2D" type="CharacterBody2D" parent="."]
collision_mask = 7 collision_mask = 7
@ -200,3 +211,8 @@ script = ExtResource("3_rdn2q")
[node name="WingFlutter" type="AudioStreamPlayer2D" parent="Audio"] [node name="WingFlutter" type="AudioStreamPlayer2D" parent="Audio"]
stream = SubResource("AudioStreamRandomizer_hyel8") stream = SubResource("AudioStreamRandomizer_hyel8")
script = ExtResource("3_rdn2q") script = ExtResource("3_rdn2q")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_54k4r")
}

@ -1,4 +1,4 @@
[gd_scene load_steps=96 format=3 uid="uid://gigb28qk8t12"] [gd_scene load_steps=98 format=3 uid="uid://gigb28qk8t12"]
[ext_resource type="PackedScene" uid="uid://c25udixd5m6l0" path="res://prefabs/characters/Player2D.tscn" id="1_7wfwe"] [ext_resource type="PackedScene" uid="uid://c25udixd5m6l0" path="res://prefabs/characters/Player2D.tscn" id="1_7wfwe"]
[ext_resource type="Texture2D" uid="uid://8sr11ex30n0m" path="res://art/mockups/Kenney_Backgrounds/Samples/uncolored_hills.png" id="2_7b2ri"] [ext_resource type="Texture2D" uid="uid://8sr11ex30n0m" path="res://art/mockups/Kenney_Backgrounds/Samples/uncolored_hills.png" id="2_7b2ri"]
@ -62,6 +62,7 @@
[ext_resource type="Texture2D" uid="uid://lvhbicmwqab5" path="res://art/farm/tilable grounds/böden/fruchtbarer wilder trockender boden.png" id="47_loeum"] [ext_resource type="Texture2D" uid="uid://lvhbicmwqab5" path="res://art/farm/tilable grounds/böden/fruchtbarer wilder trockender boden.png" id="47_loeum"]
[ext_resource type="AudioStream" uid="uid://c43a6x43jkikl" path="res://audio/sfx/Farming/SFX_GettingWater_Well_01_Reverb.wav" id="49_d77e7"] [ext_resource type="AudioStream" uid="uid://c43a6x43jkikl" path="res://audio/sfx/Farming/SFX_GettingWater_Well_01_Reverb.wav" id="49_d77e7"]
[ext_resource type="PackedScene" uid="uid://muuxxgvx33fp" path="res://prefabs/farm/duck.tscn" id="62_i36hd"] [ext_resource type="PackedScene" uid="uid://muuxxgvx33fp" path="res://prefabs/farm/duck.tscn" id="62_i36hd"]
[ext_resource type="Script" uid="uid://fvo04di6k7we" path="res://scripts/CSharp/Common/Animation/PenCollider.cs" id="63_uxa2m"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_wtdui"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_wtdui"]
shader = ExtResource("13_7p0hq") shader = ExtResource("13_7p0hq")
@ -223,6 +224,9 @@ stream_0/stream = ExtResource("39_di1ed")
stream_1/stream = ExtResource("40_ceriq") stream_1/stream = ExtResource("40_ceriq")
stream_2/stream = ExtResource("49_d77e7") stream_2/stream = ExtResource("49_d77e7")
[sub_resource type="RectangleShape2D" id="RectangleShape2D_lwk6t"]
size = Vector2(1407.56, 1310.2)
[node name="BabushkaSceneFarmOutside2d" type="Node2D"] [node name="BabushkaSceneFarmOutside2d" type="Node2D"]
script = ExtResource("34_e5b7x") script = ExtResource("34_e5b7x")
_sceneToLoad = ExtResource("2_taxvr") _sceneToLoad = ExtResource("2_taxvr")
@ -2122,6 +2126,9 @@ offset_top = 0.228533
offset_right = -456.339 offset_right = -456.339
offset_bottom = 30.2285 offset_bottom = 30.2285
[node name="Control" parent="CanvasLayer" index="3"]
visible = false
[node name="Audio" type="Node" parent="."] [node name="Audio" type="Node" parent="."]
[node name="Background Music Ramp up" type="AudioStreamPlayer2D" parent="Audio"] [node name="Background Music Ramp up" type="AudioStreamPlayer2D" parent="Audio"]
@ -2163,6 +2170,50 @@ max_distance = 2e+07
playback_type = 2 playback_type = 2
script = ExtResource("40_w3jkj") 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")] [node name="Duck" parent="." node_paths=PackedStringArray("_vesna") instance=ExtResource("62_i36hd")]
position = Vector2(2517, 2417) position = Vector2(2517, 2417)
_vesna = NodePath("../YSorted/Vesna/CharacterBody2D") _vesna = NodePath("../YSorted/Vesna/CharacterBody2D")
@ -2171,6 +2222,13 @@ _vesna = NodePath("../YSorted/Vesna/CharacterBody2D")
position = Vector2(3540, 2518) position = Vector2(3540, 2518)
_vesna = NodePath("../YSorted/Vesna/CharacterBody2D") _vesna = NodePath("../YSorted/Vesna/CharacterBody2D")
[node name="PenCollider" type="Area2D" parent="."]
script = ExtResource("63_uxa2m")
[node name="CollisionShape2D" type="CollisionShape2D" parent="PenCollider"]
position = Vector2(-4983.78, 2662.9)
shape = SubResource("RectangleShape2D_lwk6t")
[connection signal="FilledWateringCan" from="YSorted/Vesna" to="Audio/SFX/FillWater SFX2" method="PlayOneShot"] [connection signal="FilledWateringCan" from="YSorted/Vesna" to="Audio/SFX/FillWater SFX2" method="PlayOneShot"]
[connection signal="WateringField" from="YSorted/Vesna/FarmingControls" to="Audio/SFX/Watering SFX" method="PlayOneShot"] [connection signal="WateringField" from="YSorted/Vesna/FarmingControls" to="Audio/SFX/Watering SFX" method="PlayOneShot"]
[connection signal="InteractedTool" from="YSorted/Brünnen/InteractionArea" to="YSorted/Vesna" method="TryFillWateringCan"] [connection signal="InteractedTool" from="YSorted/Brünnen/InteractionArea" to="YSorted/Vesna" method="TryFillWateringCan"]

@ -10,13 +10,13 @@ public partial class Duck : Node2D
[Export] private AudioPlayer _wingFlapAudio; [Export] private AudioPlayer _wingFlapAudio;
[Export] private Node2D _vesna; [Export] private Node2D _vesna;
[Export] private float _runningSpeed = 5f; [Export] private float _runningSpeed = 5f;
[Export] private float _slowSpeed = 0.5f; [Export] private float _slowSpeed = 1f;
[Export] private float _minDistanceToVesna = 1000f; [Export] private float _minDistanceToVesna = 1000f;
private bool _vesnaInReach = false; private bool _vesnaInReach = false;
private bool _penEntered = false; private bool _penEntered = false;
private Vector2 _lastDirection = Vector2.Up; private Vector2 _lastDirection = Vector2.Up;
private int _numberOfFramesPerDirection = 100; private int _numberOfFramesPerDirection = 1000;
private int _currentFramesThisDirection = 0; private int _currentFramesThisDirection = 0;
@ -32,6 +32,7 @@ public partial class Duck : Node2D
{ {
_characterBody.Velocity = Vector2.Zero; _characterBody.Velocity = Vector2.Zero;
_characterBody.MoveAndSlide(); _characterBody.MoveAndSlide();
GD.Print("Pen entered.");
return; return;
} }
@ -40,9 +41,10 @@ public partial class Duck : Node2D
if (currentDistance < _minDistanceToVesna) if (currentDistance < _minDistanceToVesna)
{ {
_characterBody.Velocity = new Vector2( _characterBody.GlobalPosition.X - _vesna.GlobalPosition.X, _characterBody.Velocity = new Vector2( _characterBody.GlobalPosition.X - _vesna.GlobalPosition.X,
_characterBody.GlobalPosition.Y - _vesna.GlobalPosition.Y); _characterBody.GlobalPosition.Y - _vesna.GlobalPosition.Y).Normalized();
_characterBody.Velocity *= _runningSpeed; _characterBody.Velocity *= _runningSpeed;
_characterBody.MoveAndSlide(); _characterBody.MoveAndSlide();
// todo: Add noise!
} }
else else
{ {
@ -58,6 +60,13 @@ public partial class Duck : Node2D
_characterBody.MoveAndSlide(); _characterBody.MoveAndSlide();
} }
/*
if (_characterBody.Velocity.X < 0 && _characterBody.Scale.X > 0)
{
_characterBody.Scale = new Vector2(_characterBody.Scale.X * (-1), _characterBody.Scale.Y);
}
*/
base._Process(delta); base._Process(delta);
} }
} }

@ -0,0 +1,12 @@
using Godot;
namespace Babushka.scripts.CSharp.Common.Animation;
public partial class PenCollider : Area2D
{
// bisons vorschlag:
// duck entered pen -> pen detects collision,
// collision reffences somehow to the duck -> pen "catches" duck object -> sets duck "i am your pen now"
}
Loading…
Cancel
Save