diff --git a/scenes/enemies/Enemy.cs b/scenes/enemies/Enemy.cs new file mode 100644 index 0000000..5a3c614 --- /dev/null +++ b/scenes/enemies/Enemy.cs @@ -0,0 +1,19 @@ +using Godot; +using System; + +public class Enemy : KinematicBody2D +{ + [Export] + private Vector2 _startPosition; + public Vector2 StartPosition { get { return _startPosition; } } + + public override void _Ready() + { + _startPosition = Position; + } + + public virtual void Reset() + { + Position = _startPosition; + } +} diff --git a/scenes/enemies/EnemyWalking.cs b/scenes/enemies/EnemyWalking.cs new file mode 100644 index 0000000..4b9556e --- /dev/null +++ b/scenes/enemies/EnemyWalking.cs @@ -0,0 +1,31 @@ +using Godot; +using System; + +public class EnemyWalking : Enemy +{ + [Export] + private int _gravity = (int) ProjectSettings.GetSetting("physics/2d/default_gravity"); + private Vector2 _velocity; + + public override void _Ready() + { + base._Ready(); + _velocity = new Vector2(); + } + + public override void _PhysicsProcess(float delta) + { + _velocity.y += (int) _gravity * delta * 5; + _velocity.x = 25 * -1; + _velocity = MoveAndSlide(_velocity, Vector2.Up); + + Mathf.Round(Position.x); + Mathf.Round(Position.y); + } + + public override void Reset() + { + base.Reset(); + _velocity = new Vector2(); + } +} diff --git a/scenes/enemies/goomba/Goomba.cs b/scenes/enemies/goomba/Goomba.cs new file mode 100644 index 0000000..80d0c1f --- /dev/null +++ b/scenes/enemies/goomba/Goomba.cs @@ -0,0 +1,19 @@ +using Godot; +using System; + +public class Goomba : EnemyWalking +{ + private AnimatedSprite _sprite; + + public override void _Ready() + { + base._Ready(); + _sprite = GetNode("AnimatedSprite"); + _sprite.Play("walk"); + } + + public void OnVisibilityNotifier2DScreenExited() + { + Reset(); + } +} diff --git a/scenes/enemies/goomba/Goomba.tscn b/scenes/enemies/goomba/Goomba.tscn index afc5dac..fb8062d 100644 --- a/scenes/enemies/goomba/Goomba.tscn +++ b/scenes/enemies/goomba/Goomba.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=7 format=2] +[gd_scene load_steps=8 format=2] [ext_resource path="res://assets/goomba/walking.png" type="Texture" id=1] +[ext_resource path="res://scenes/enemies/goomba/Goomba.cs" type="Script" id=2] [sub_resource type="AtlasTexture" id=1] atlas = ExtResource( 1 ) @@ -23,10 +24,11 @@ animations = [ { } ] [sub_resource type="RectangleShape2D" id=5] -extents = Vector2( 6.5, 7 ) +extents = Vector2( 6.67969, 7 ) [node name="Goomba" type="KinematicBody2D" groups=["Enemy", "Stompable"]] collision_layer = 4 +script = ExtResource( 2 ) [node name="AnimatedSprite" type="AnimatedSprite" parent="."] frames = SubResource( 4 ) @@ -34,5 +36,14 @@ animation = "walk" [node name="CollisionShape2D" type="CollisionShape2D" parent="."] visible = false -position = Vector2( 0.5, 2 ) +position = Vector2( 0.320312, 2 ) shape = SubResource( 5 ) + +[node name="VisibilityEnabler2D" type="VisibilityEnabler2D" parent="."] +visible = false +position = Vector2( 1, 0 ) +rect = Rect2( -9, -9, 18, 18 ) +process_parent = true +physics_process_parent = true + +[connection signal="screen_exited" from="VisibilityEnabler2D" to="." method="OnVisibilityNotifier2DScreenExited"]