Возможность отключать интерактивные объекты

This commit is contained in:
Евгений Титаренко 2024-08-25 13:31:50 +03:00
parent 26db1ea66d
commit 872d650b3d
4 changed files with 29 additions and 5 deletions

View file

@ -17,6 +17,7 @@ public partial class Day : Node2D
private Player _player;
private ColorRect _colorRect;
private AudioStreamPlayer _music;
private Interactable _endDay;
private double _transitionTimeout = 0;
@ -26,6 +27,7 @@ public partial class Day : Node2D
_player = (Player)FindChild("Player");
_colorRect = _player.CRect;
_music = (AudioStreamPlayer)FindChild("Music");
_endDay = (Interactable)FindChild("EndDay");
_colorRect.Color = new Color(0, 0, 0, 1f);
_music.VolumeDb = -40;
_player.CurrentState = Player.State.Wait;
@ -36,6 +38,11 @@ public partial class Day : Node2D
{
_state = State.TransitionOut;
}
public void EnableEndDay()
{
}
// Called every frame. 'delta' is the elapsed time since the previous frame.
public override void _Process(double delta)

View file

@ -13,7 +13,7 @@ public partial class Interactable : Node2D
[Export] public Vector2 SpriteOffset;
[Export] public float AreaRadius;
[Export] public bool IsEnabled;
private AnimatedSprite2D _sprite;
private CollisionShape2D _areaMesh;
@ -46,11 +46,20 @@ public partial class Interactable : Node2D
if (_sprite.Position != SpriteOffset) _sprite.Position = SpriteOffset;
if (Math.Abs(_collisionCircle.Radius - AreaRadius) > Tolerance) _collisionCircle.Radius = AreaRadius;
}
if (IsEnabled)
{
_sprite.Visible = true;
}
else
{
_sprite.Visible = false;
}
}
private void _on_area_2d_body_entered(Node2D body)
{
if (body is Player player)
if (IsEnabled && body is Player player)
{
_sprite.Visible = true;
EmitSignal(SignalName.PlayerNearBy, player);
@ -59,7 +68,7 @@ public partial class Interactable : Node2D
private void _on_area_2d_body_exited(Node2D body)
{
if (body is Player player)
if (IsEnabled && body is Player player)
{
_sprite.Visible = false;
EmitSignal(SignalName.PlayerLeft, player);