only respawn the enemy if it is off screen and the camera is not looking at its spawn point
This commit is contained in:
parent
160f86f35a
commit
3dfc4dd04d
@ -6,14 +6,29 @@ public class Enemy : KinematicBody2D
|
|||||||
[Export]
|
[Export]
|
||||||
private Vector2 _startPosition;
|
private Vector2 _startPosition;
|
||||||
public Vector2 StartPosition { get { return _startPosition; } }
|
public Vector2 StartPosition { get { return _startPosition; } }
|
||||||
|
private Event _event;
|
||||||
|
|
||||||
public override void _Ready()
|
public override void _Ready()
|
||||||
{
|
{
|
||||||
|
_event = GetNode<Event>("/root/Event");
|
||||||
_startPosition = Position;
|
_startPosition = Position;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void Reset()
|
public virtual void Reset()
|
||||||
{
|
{
|
||||||
Position = _startPosition;
|
// Shove him off screen somewhere until we can respawn him
|
||||||
|
Position = new Vector2(-100, - 100);
|
||||||
|
_event.Connect("CameraView", this, "OnCameraView");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnCameraView(Rect2 rect)
|
||||||
|
{
|
||||||
|
rect.Size += new Vector2(32, 32);
|
||||||
|
if (!rect.HasPoint(StartPosition))
|
||||||
|
{
|
||||||
|
// We can respawn him because the player is not in the spawn point
|
||||||
|
_event.Disconnect("CameraView", this, "OnCameraView");
|
||||||
|
Position = StartPosition;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user