예제 #1
0
    public void GetCloser(PlayerSoldier enemy)
    {
        UnMarkAvailableTilesToStep();
        CoverSoldier();
        enemy.CoverSoldier();

        if (CurrentSide == GameSide.LeftSide && enemy.CurrentTile.Column < CurrentTile.Column ||
            CurrentSide == GameSide.RightSide && enemy.CurrentTile.Column > CurrentTile.Column)
        {
            isFlipped = true;
            if (enemy is Zombie)
            {
                (enemy as Zombie).isFlipped = true;
                enemy.FlipSide(false);
                enemy.transform.position = new Vector2(enemy.CurrentTile.transform.position.x + OffsetX, enemy.CurrentTile.transform.position.y + OffsetY);
            }
            FlipSide(false);
            transform.position = new Vector2(CurrentTile.transform.position.x + OffsetX, CurrentTile.transform.position.y + OffsetY);
        }

        anim.Play("Walk");
        SoundManager.Instance.SFX.PlayOneShot(SoundManager.Instance.ZombieWalkShort);
        playerCollider.isTrigger = enemy.PlayerCollider.isTrigger = true;
        enemy.SetWarTag();

        CurrentTile.Soldier = null;
        CurrentTile         = enemy.CurrentTile;
        //CurrentTile.Soldier = this;
        destination = new Vector2(CurrentTile.transform.position.x + OffsetX, CurrentTile.transform.position.y + OffsetY);
        isWalking   = isInWar = true;
    }
    public void PlaceSoldier(Tile tile, PlayerSoldier soldier, bool isEnemy = false)
    {
        PlayerSoldier newSoldier = Instantiate(soldier, transform);

        if (isEnemy)
        {
            newSoldier.FlipSide();
            EnemyList.Add(newSoldier);
        }
        else
        {
            LocalPlayerList.Add(newSoldier);
        }
        newSoldier.transform.position = new Vector3(tile.transform.position.x + newSoldier.OffsetX,
                                                    tile.transform.position.y + newSoldier.OffsetY);
        newSoldier.GetComponent <SpriteRenderer>().sortingOrder = tile.Row + 1;
        newSoldier.CurrentTile         = tile;
        newSoldier.CurrentTile.Soldier = newSoldier;
        tile.MarkTileInUse();
    }