Example #1
0
    /**
     * @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;
    }
Example #2
0
    /**
     * @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);
    }