플레이어의 발사체를 4방향으로 발사하게 하고싶은데 어떻게하는지 잘 모르겠는 것이다..
일단 빔(발사체) 스크립트는 건드릴 필요 없고, 그대로 X방향(오른쪽)으로 이동하게 두었다.
(*유니티 자습서 2D프로젝트에 보니 빈 오브젝트를 추가하여 거기서 제어하도록 하면 빔 발사 위치를 좀 더 정교하게 다룰 수 있다고 한다. 일단 지금 만드는 게임에선 필요없는 작업이고, 나중에 총을 쏜다던가..발사체의 위치를 정확하게 해야할 때 시도해봐야겠다.)
나는 위,아래,왼쪽,오른쪽 화살표를 누르면 발사체가 나가도록 해주었다.
{ Rigidbody2D bulletInstantiate = Instantiate(발사체 프리팹, transform.position, Quaternion.Euler(new Vector3(0, 0, 각도입력))) as Rigidbody2D;}
이다.
Z축 각도만 조절하여 입력해주면 된다.
기본값에 오른쪽이므로, 오른쪽으로 발사하고 싶은 경우에는 z각도를 0으로 입력해주면 된다.
왼쪽은 180f, 위는 90f, 아래는 -90f이다.
접기
void BimControl()
{
if (Input.GetKey(KeyCode.RightArrow)|| Input.GetKey(KeyCode.LeftArrow)|| Input.GetKey(KeyCode.UpArrow)|| Input.GetKey(KeyCode.DownArrow)) //해당 키를 누르면 빔발사 가능
{
aniNumber = 1; // 공격 애니메이션으로 교체
canBim = true;
if (canBim == true && bimTimer > bimDelay) //canBim이 true라면 (스페이스바를 누르면) //빔 타이머값이 빔 딜레이값보다 커지면
{
if (Input.GetKey(KeyCode.RightArrow))
{
Rigidbody2D bulletInstantiate = Instantiate(bimPrefab, transform.position, Quaternion.Euler(new Vector3(0, 0, 0))) as Rigidbody2D;
aniNumber = 2;
//오른쪽으로 빔발사 (z값 각도를 조절해주면 된다) 기본값이 오른쪽으로 전진하는 것이기 때문에, 여기선 각도값을 건드릴 필요가 없다.
//Quaternion은 3D변환에서 회전을 표현하는 방법이다. 우리말로는 사원수라고 하는데..이해하기 조금 어려운 개념이다
//중요한것은 쿼터니언이 3D 회전 변환에서 매우 유용하게 쓰인다는 것
//Euler역시 3D변환에서 회전을 표현하는 방식인데, 3개 축(x,y,z)에 대한 각도를 회전정보로 사용한다.
}
if (Input.GetKey(KeyCode.LeftArrow) )
{
Rigidbody2D bulletInstantiate = Instantiate(bimPrefab, transform.position, Quaternion.Euler(new Vector3(0, 0, 180f))) as Rigidbody2D;
aniNumber = 2;
//왼쪽으로 빔발사
}
if (Input.GetKey(KeyCode.UpArrow))
{
Rigidbody2D bulletInstantiate = Instantiate(bimPrefab, transform.position, Quaternion.Euler(new Vector3(0, 0, 90f))) as Rigidbody2D;
aniNumber = 2;
//위로
}
if (Input.GetKey(KeyCode.DownArrow))
{
Rigidbody2D bulletInstantiate = Instantiate(bimPrefab, transform.position, Quaternion.Euler(new Vector3(0, 0, -90f))) as Rigidbody2D;
aniNumber = 2;
//아래로
}
bimTimer = 0; //빔타이머 초기화
}
}
bimTimer += Time.deltaTime; //Time.deltaTime값을 빔타이머에 넣음 (매 타임마다 값 증가)
if (Input.GetKeyUp(KeyCode.RightArrow) || Input.GetKeyUp(KeyCode.LeftArrow) || Input.GetKeyUp(KeyCode.UpArrow) || Input.GetKeyUp(KeyCode.DownArrow)) //키를 떼면 다시 불가능해짐
{
aniNumber = 2; //일반 애니메이션으로 돌아감
}
anim.SetInteger("aniNum", aniNumber);
}
접기 +으음, 빔에 메모리풀을 적용하려고 했는데..4방향으로 빔을 쏘게하는방법을 모르겠다.
한 5시간 삽질하다가, 결국 빔 위/아래/오른쪽/왼쪽 프리팹 따로 만들어서 적용시켜줬다. 좀 더 나은방법이 분명 있을텐데..