/** * @brief 공격을 실행 하는 코루틴 입니다. * * @param targetPosition 폭탄이 떨어질 목표 지점 */ IEnumerator CoroutineCreateBomb(Vector3 targetPosition) { // 쏘기전 잠시 기다림 yield return(new WaitForSeconds(DELAY_TIME)); // 오브젝트 풀에서 해당 오브젝트를 가져옴 GameObject item = ObjectPoolManager.GetInstance().PopFromPool(POOL_ITEM_NAME); if (item && muzzle) { // 발사 위치를 받음 Vector3 muzzlePosition = muzzle.position; // pool에서 반환받은 bullet의 위치를 설정해줌 item.transform.position = muzzlePosition + transform.forward; // 눈에보이도록 활성화 시킴 item.SetActive(true); // 포물선 연산하는 함수를 가져오기 위해 BombMove 스크립트를 가져옴 BombMove bomb = item.GetComponent <BombMove>(); // 소유자 설정 bomb.owner = _playerState.nickName; // 포물선 연산 시작 bomb.Shoot(muzzlePosition, targetPosition); } // 코루틴 종료 flag isRunning = false; }
/** * @brief 폭탄(특수공격) 발사 하는 코루틴 입니다. * * @param muzzlePosition 발사 위치 * @param targetPosition 폭탄이 떨어질 타겟 지점 * @param direction 날아가는 방향 */ IEnumerator CoroutineCreateBomb(Vector3 muzzlePosition, Vector3 targetPosition, Vector3 direction) { // 오브젝트 풀에서 해당 오브젝트를 가져옴 GameObject item = ObjectPoolManager.GetInstance().PopFromPool(SkillName); if (item && muzzle) { // pool에서 반환받은 bullet의 위치를 설정해줌 item.transform.position = muzzlePosition + transform.forward; // 눈에보이도록 활성화 시킴 item.SetActive(true); // 포물선 연산하는 함수를 가져오기 위해 BombMove 스크립트를 가져옴 BombMove bomb = item.GetComponent <BombMove>(); // 소유자 설정 bomb.owner = _playerState.nickName; // 포물선 연산 시작 bomb.Shoot(muzzlePosition, targetPosition); } yield return(null); }