Esempio n. 1
0
    protected virtual bool AICanMove(out Tile targetTile)
    {
        targetTile = null;
        if (!_aiCharacter.IsAbleToMove())
        {
            return(false);
        }

        var minDistance    = float.MaxValue;
        var availableMoves = _aiCharacter.CalculateAvailableMoves();

        foreach (var playerCharacter in _playerCharacters)
        {
            var closestTileToPlayer = GetClosestTileToPlayer(
                playerCharacter.transform.position,
                availableMoves,
                out var distance);

            if (closestTileToPlayer != null &&
                string.IsNullOrEmpty(closestTileToPlayer.CharacterControllerId) &&
                distance < minDistance)
            {
                targetTile  = closestTileToPlayer;
                minDistance = distance;
            }
        }

        return(true);
    }