示例#1
0
        private void OnTileChanged(Vector2Int previous, Vector2Int current)
        {
            if (Running)
            {
                var previousDirection = current - previous;
                var reachedNode       = GetNodePosition(_nextIndex, _startingPosition) == current;

                if (reachedNode)
                {
                    NodeReached();
                }

                if (reachedNode || _path.UsePathfinding)
                {
                    FindPathToNextNode();
                }

                var currentDirection = _targetPosition - current;
                currentDirection.x = Mathf.Clamp(currentDirection.x, -1, 1);
                currentDirection.y = Mathf.Clamp(currentDirection.y, -1, 1);

                if (_delay > 0 || currentDirection != previousDirection)
                {
                    _mover.SkipNextUpdate();
                }
            }
        }
示例#2
0
        public void Freeze()
        {
            if (_frozenCount == 0)
            {
                Mover.SkipNextUpdate();
            }

            _frozenCount++;
        }