void Update() { //타이머가 초기화 되지 않았고, 공격 버튼을 누르지 않은 상태 if (attackTimer > 0) { attackTimer -= Time.deltaTime; } //공격 버튼이 눌려있는 상태 if (isAttackInput) { if (attackTimer <= 0) { //공격 속도가 0인 경우(공격 불가 상태) 실행 안함 / Divid zero 예외처리 겸용 if (playerStatus.attackSpeed == 0) { return; } //공격 모션 적용 attackTimer = 1 / playerStatus.attackSpeed; playerAnimation.SetAttackMotionSpeed(playerStatus.attackSpeed); playerAnimation.StartAttack(); attackDirection = playerAnimation.GetPlayerSpriteDirection(); //기본공격 프리팹을 인스턴스화 //공격 방향에 따라 범위 회전 및 위치 변경 //상하좌우 순서로 transform자식이 각각의 위치에 배치되어있음 GameObject newAttack; if (attackDirection == Vector2.up) { newAttack = Instantiate(basicAttackPrefab, transform.GetChild(0)); newAttack.transform.Rotate(0, 0, 180); } else if (attackDirection == Vector2.down) { newAttack = Instantiate(basicAttackPrefab, transform.GetChild(1)); newAttack.transform.Rotate(0, 0, 0); } else if (attackDirection == Vector2.left) { newAttack = Instantiate(basicAttackPrefab, transform.GetChild(2)); newAttack.transform.Rotate(0, 0, -90); } else { newAttack = Instantiate(basicAttackPrefab, transform.GetChild(3)); newAttack.transform.Rotate(0, 0, 90); } //기본공격 정보 설정 basicAttack = newAttack.GetComponent <BasicAttack>(); basicAttack.skillCaster = transform.parent.gameObject; basicAttack.SetSkillIndex(-1); basicAttack.skillDirection = attackDirection; basicAttack.knockBackPower += playerStatus.knockBackPower; basicAttack.isKnockBack = true; basicAttack.damage += playerStatus.attackDamage; basicAttack.ActivateSkill(); } } else { playerAnimation.StopAttack(); } }