// 게임 오브젝트 풀 초기화. 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); } }
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(); }
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(); }
// 게임 오브젝트 풀 초기화. 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); } }