void Start()
    {
        player = SpawnCharacter(true);
        enemy  = SpawnCharacter(false);

        SetSelectedCharacter(player);
    }
    private void SetSelectedCharacter(CharacterBattleHanlder character)
    {
        Destroy(selectedCircle);
        if (character == player)
        {
            selectedCharacter = player;
            selectedCircle    = Instantiate(pfSelectedCharacterCircle, player.transform.position, Quaternion.identity);
        }
        else if (character == enemy)
        {
            selectedCharacter = enemy;
            selectedCircle    = Instantiate(pfSelectedCharacterCircle, enemy.transform.position, Quaternion.identity);

            var distance            = Vector3.Distance(enemy.transform.position, player.transform.position);
            var slideTargetPosition = new Vector3(enemy.transform.position.x - distance, enemy.transform.position.y);
            enemy.SlideToPosition(slideTargetPosition, () => {
                enemy.Attack(enemy, () => {
                    var damage = UnityEngine.Random.Range(10, 40);
                    player.Damage(damage);
                    if (enemy.IsDead())
                    {
                        FightOver("Enemy");
                    }

                    enemy.SlideToPosition(new Vector3(1.5f, 0, 0), () => {
                        enemy.state = CharacterState.Idle;
                        SetSelectedCharacter(player);
                    });
                });
            });
        }
    }
Exemple #3
0
 public void Attack(CharacterBattleHanlder target, Action onAttackComplete)
 {
     state                 = CharacterState.Busy;
     attackTime            = .5f;
     this.onAttackComplete = onAttackComplete;
 }