예제 #1
0
    // 게임 오브젝트 풀 초기화.
    void InitGameObjectPool()
    {
        spawnPos += GameData.Instance.gamePlayManager
                    .gameObjectPoolPosition.transform.position;
        //원거리에서 공격할 수 있도록 구현.
        objPool = new GameObjectPool(
            spawnPos.x,
            tempObj);

        // 발사 오브젝트 생성.
        for (int i = 0; i < 20; ++i)
        {
            shotObjScript = null;
            GameObject makeObj =
                Instantiate(
                    fireObj,
                    spawnPos,
                    Quaternion.Euler(Vector3.up * 90)
                    ) as GameObject;
            makeObj.name = makeObj.name + i;
            objPool.AddGameObject(makeObj);

            shotObjScript = makeObj.GetComponent <ShotObj>();
            shotObjScript.InitReturnPosition(spawnPos);
        }
    }
예제 #2
0
    void Fire(Vector3 inputPosition)
    {
        // 입력 위치(inputPosition)를 카메라가 바라보는 영역 안의 월드 좌표(절대 좌표)로 변환.
        tempVector3   = mainCamera.ScreenToWorldPoint(inputPosition);
        tempVector3.z = 0;
        // 벡터의 뺄셈 후 방향만 지닌 단위 벡터로 변경.
        fireDirection = tempVector3 - firePoint.position;
        fireDirection = fireDirection.normalized;

        // 발사할 오브젝트.
        shotObjScript = null;
        if (!objPool.NextGameObject(out tempObj))
        {
            tempObj = Instantiate(
                fireObj,
                spawnPos,
                Quaternion.Euler(Vector3.up * 90)
                ) as GameObject;
            tempObj.name = tempObj.name + objPool.lastIndex;
            objPool.AddGameObject(tempObj);

            shotObjScript = tempObj.GetComponent <ShotObj>();
            shotObjScript.InitReturnPosition(spawnPos);
        }

        if (shotObjScript == null)
        {
            shotObjScript = tempObj.GetComponent <ShotObj>();
        }

        tempObj.transform.position = firePoint.position;
        // 발사한 오브젝트 속도 계산.
        tempVector2.Set(fireDirection.x, fireDirection.y);
        tempVector2 = tempVector2 * fireSpeed;
        // 속도 적용.
        tempObj.rigidbody2D.velocity = tempVector2;

        // 공격력을 전달한다.
        if (attDamage == 0)
        {
            attDamage
                = 1 + GameData.Instance.ConvertUpgradeLvToAddValue(
                      GameData.Instance.userdata.attLv);
        }
        shotObjScript.InitShotObj(attDamage);
        shotObjScript.TurnOnTrigger();
    }
예제 #3
0
    void Fire(Vector3 inputPosition)
    {
        // 입력 위치(inputPosition)를 카메라가 바라보는 영역 안의 월드 좌표(절대 좌표)로 변환.
        tempVector3 = mainCamera.ScreenToWorldPoint(inputPosition);
        tempVector3.z = 0;
        // 벡터의 뺄셈 후 방향만 지닌 단위 벡터로 변경.
        fireDirection = tempVector3 - firePoint.position;
        fireDirection = fireDirection.normalized;

        // 발사할 오브젝트.
        shotObjScript = null;
        if( !objPool.NextGameObject(out tempObj) )
        {
            tempObj = Instantiate(
                fireObj,
                spawnPos,
                Quaternion.Euler(Vector3.up * 90)
                ) as GameObject;
            tempObj.name = tempObj.name + objPool.lastIndex;
            objPool.AddGameObject(tempObj);

            shotObjScript = tempObj.GetComponent<ShotObj>();
            shotObjScript.InitReturnPosition(spawnPos);
        }

        if(shotObjScript == null)
        {
            shotObjScript = tempObj.GetComponent<ShotObj>();
        }

        tempObj.transform.position = firePoint.position;
        // 발사한 오브젝트 속도 계산.
        tempVector2.Set(fireDirection.x, fireDirection.y);
        tempVector2 = tempVector2 * fireSpeed;
        // 속도 적용.
        tempObj.rigidbody2D.velocity = tempVector2;

        // 공격력을 전달한다.
        if(attDamage==0)
        {
            attDamage
                = 1 + GameData.Instance.ConvertUpgradeLvToAddValue(
                    GameData.Instance.userdata.attLv);
        }
        shotObjScript.InitShotObj(attDamage);
        shotObjScript.TurnOnTrigger();
    }
예제 #4
0
    // 게임 오브젝트 풀 초기화.
    void InitGameObjectPool()
    {
        spawnPos += GameData.Instance.gamePlayManager
            .gameObjectPoolPosition.transform.position;
        //원거리에서 공격할 수 있도록 구현.
        objPool = new GameObjectPool(
            spawnPos.x,
            tempObj);

        // 발사 오브젝트 생성. 
        for(int i=0;i<20;++i)
        {
            shotObjScript = null;
            GameObject makeObj = 
                Instantiate(
                fireObj, 
                spawnPos, 
                Quaternion.Euler(Vector3.up * 90)
                ) as GameObject;
            makeObj.name = makeObj.name + i;
            objPool.AddGameObject(makeObj);
            
            shotObjScript = makeObj.GetComponent<ShotObj>();
            shotObjScript.InitReturnPosition(spawnPos);
        }
    }