unity/개발

게임오브젝트의 이동 및 회전 1

그린티라떼 2020. 10. 22. 18:35

게임오브젝트의 이동 및 회전시킬 때 크게 두 가지 방법으로 Transform 컴포넌트와 물리엔진(PhysX, Box2D)이 있다.

 

이 글에서는

InputManager 이용, Transform 컴포넌트 이용

 

변수 선언

    private float h = 0.0f;
    private float v = 0.0f;
    private float r = 0.0f;

    //이동 속도 변수
    public float moveSpeed = 10.0f;
    //회전 속도 변수
    public float rotSpeed = 80.0f;

 

 

이동 로직

void Update()
    {
        h = Input.GetAxis("Horizontal");
        v = Input.GetAxis("Vertical");
        r = Input.GetAxis("Mouse X");

        //전후좌우 이동 방향 벡터 계산 
        Vector3 moveDir = (Vector3.forward * v) + (Vector3.right * h);

        //(이동방향 * 속도 * 변위값 * time.deltatime, 기준 좌표)
        tr.Translate(moveDir.normalized * moveSpeed  * Time.deltaTime, Space.Self);

        //Vector3.up 축을 기준으로 rotSpeed만큼의속도로 회전
        tr.Rotate(Vector3.up * rotSpeed * Time.deltaTime * r);
     }

 

 

-GetAxis

Input.GetAxis("Horizontal") : -1.0f  ~ +1.0f 범위의 값 반환

Input.GetAxisRaw("Horizontal") : -1 ,0 ,+1 세 가지 값 반환

 

 

-Vector3 데이터 타입

nomalized : 크기가 1인 벡터, 정규화 벡터, 방향을 나타내는 벡터

magnitude : 벡터의 길이

sqrMagnitude : 벡터의 길이의 제곱근

 

 

 


<참고자료>

이재현, 절대강좌! 유니티