void Update() { if (Input.GetKeyDown(KeyCode.Space)) { if (selectedCharacter != player) { return; } if (player.state != CharacterState.Idle) { return; } player.state = CharacterState.Sliding; var distance = Vector3.Distance(player.transform.position, enemy.transform.position); var slideTargetPosition = new Vector3(player.transform.position.x + distance, player.transform.position.y); player.SlideToPosition(slideTargetPosition, () => { player.Attack(enemy, () => { var damage = UnityEngine.Random.Range(10, 40); enemy.Damage(damage); if (enemy.IsDead()) { FightOver("Player"); } player.SlideToPosition(new Vector3(-1.6f, 0, 0), () => { player.state = CharacterState.Idle; SetSelectedCharacter(enemy); }); }); }); } }
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); }); }); }); } }