diff --git a/Assets/Scenes/Island.unity b/Assets/Scenes/Island.unity index d170c87..a6b5cb2 100644 --- a/Assets/Scenes/Island.unity +++ b/Assets/Scenes/Island.unity @@ -171,6 +171,7 @@ MonoBehaviour: _pathStart: {fileID: 1415278839} _pathEnd: {fileID: 761061820} _resetBlockTime: 0.03 + _destroyBlockDelay: 0.5 _pathFinish: - {fileID: 1987853413} - {fileID: 1569763699} diff --git a/Assets/Scripts/SandPathBuildService.cs b/Assets/Scripts/SandPathBuildService.cs index f1dcca5..07e419b 100644 --- a/Assets/Scripts/SandPathBuildService.cs +++ b/Assets/Scripts/SandPathBuildService.cs @@ -13,12 +13,15 @@ public class SandPathBuildService : MonoBehaviour [SerializeField] private BlockScript _pathStart; [SerializeField] private BlockScript _pathEnd; [SerializeField] private float _resetBlockTime = 0.5f; + [SerializeField] private float _destroyBlockDelay = 1f; [SerializeField] private BlockScript[] _pathFinish; [SerializeField] private BlockScript[] _predefinedBlocks; [SerializeField] private UnityEvent _onBlockDestroy; [SerializeField] private UnityEvent _onBuildComplete; + private float _spawnBlockTime; + public event UnityAction OnBlockDestroy { add => _onBlockDestroy.AddListener(value); @@ -95,7 +98,8 @@ public class SandPathBuildService : MonoBehaviour return; if (block == _currentBlock) { - ResetLastBlock(); + if (Time.time - _spawnBlockTime >= _destroyBlockDelay) + ResetLastBlock(); return; } if (!block.CompareTag("GrassBlock") || @@ -106,6 +110,7 @@ public class SandPathBuildService : MonoBehaviour var t = block.transform; _currentBlock = Instantiate(_blockPrefab, t.position, t.localRotation, t.parent); _blocksInPath.Add(_currentBlock); + _spawnBlockTime = Time.time; if (_pathFinish.Contains(block)) { _currentBlock = _pathEnd;