[유니티] 오브젝트 회전(Euler/Quaternion), Vector3의 외적/내적, 삼각함수를 이용한 플레이어 이동 및 총알 발사 (2022.07.14)

728x90

1.오브젝트 회전(EulerAngle / Quaternion)

 

오일러 앵글은 X,Y,Z축을 기준으로 회전

쿼터니언은 X,Y,Z 축에 상관 없이 내가 회전시키고 싶은 기준 축을 잡아서 돌림(4원수)

 

Vector가 덧셈,뺄샘 / Quaternion은 곱셈

Vector의 회전 방법 = Quaternion * Vector

// 총알을 360도 발사하는 코드
void ShootBullet()
{
	int deltaAngle = 360 / bulletCount;
    Vector3 dir = Vector3.up;
    
    for(int i = 0; i < bulletCount; i++)
   	{
    	GameObject bullet = Instantiate(bulletFactory);
        
        // ***발사 방향을 정하는 여러가지 방법***
        bullet.transform.eulerAngles = new Vector3(0, 0, deltaAngle * i);
        bullet.transform.rotation = Quaternion.Euler(0, 0, deltaAngle * i);
        bullet.transform.Rotate(0, 0, deltaAngle * i);
        dir = Quaternion.Euler(0, 0, deltaAngle) * dir;
        // ************************************
        bullet.transform.position = transform.position;
    }
}

Quaternion.fromtorotation / Quaternion.inverse

짐벌락

 

2. Vector3의 내적과 외적

 

 

3. 삼각함수를 이용한 플레이어 이동 및 미사일 발사

 

 

728x90