Отображение в редакторе при изменении экспортированных переменных, музыка на все дни, звуки дверей, NPC.

This commit is contained in:
Евгений Титаренко 2024-08-18 16:22:44 +03:00
parent fec3f22665
commit 3c1619ee9f
47 changed files with 657 additions and 89 deletions

View file

@ -1,8 +1,11 @@
using Godot;
using System;
[Tool]
public partial class Interactable : Node2D
{
private const double Tolerance = 1e-6;
[Signal]
public delegate void PlayerNearByEventHandler(Player player);
[Signal]
@ -15,18 +18,34 @@ public partial class Interactable : Node2D
private CollisionShape2D _areaMesh;
private CircleShape2D _collisionCircle;
// Called when the node enters the scene tree for the first time.
public override void _Ready()
{
_sprite = (AnimatedSprite2D)FindChild("AnimatedSprite2D");
_areaMesh = (CollisionShape2D)FindChild("CollisionShape2D");
_sprite.Position += SpriteOffset;
((CircleShape2D)_areaMesh.Shape).Radius = AreaRadius;
_sprite.Position = SpriteOffset;
_collisionCircle =(CircleShape2D)_areaMesh.Shape;
_collisionCircle.Radius = AreaRadius;
if (Engine.IsEditorHint())
{
_sprite.Visible = true;
}
else
{
_sprite.Visible = false;
}
}
// Called every frame. 'delta' is the elapsed time since the previous frame.
public override void _Process(double delta)
{
if (Engine.IsEditorHint())
{
if (_sprite.Position != SpriteOffset) _sprite.Position = SpriteOffset;
if (Math.Abs(_collisionCircle.Radius - AreaRadius) > Tolerance) _collisionCircle.Radius = AreaRadius;
}
}
private void _on_area_2d_body_entered(Node2D body)