본문 바로가기
Unity

Unity IDragHandler 로 오브젝트 회전시키기

by 위즈밈 2021. 5. 13.
반응형

 

 

 

 

 

 

먼저 에셋스토어에서 예쁜 지구 오브젝트를 다운로드 받겠습니다. 무료입니다.

 

 

 

 

 

Demo 씬에 들어가니 덩그라니 지구 하나가 놓여져있습니다.

 

 

 

 

 

 

 

에셋 제작자가 미리 자동으로 회전하는 스크립트를 넣어놨기 때문에 일단 지웁니다.

 

저희는 마우스로 회전 시킬 거기 때문이죠.

 

스크립트를 작성합니다.

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
 
public class EarthRotater : MonoBehaviour, IDragHandler
{
    public float rotateSpeed = 10;
 
    public void OnDrag(PointerEventData eventData)
    {
        float x = eventData.delta.x * Time.deltaTime * rotateSpeed;
        float y = eventData.delta.y * Time.deltaTime * rotateSpeed;
 
        transform.Rotate(0-x, y, Space.World);
 
        Debug.Log("드래그");
    }
}
 
cs

 

 

 

IDragHandler 라는 인터페이스를 사용합니다.

 

OnDrag()함수를 반드시 구현해주어야하는데요.

 

이 스크립트를 가진 오브젝트가 드래그 중일때 호출됩니다.

 

 

 

 

 

 

마우스의 Ray를 감지할 BoxCollider와 함께 EarthRotater 컴포넌트를 지구에 추가합니다.

 

 

 

 

잘 적용된 모습

 

 

 

 

 

하이어라키 창 우클릭 -> UI -> Event System도 추가해줍니다.

마우스 클릭, 혹은 터치를 감지하는 녀석입니다.

 

 

 

 

 

 

 

Main Camera에 Physics Raycaster 컴포넌트를 추가합니다.

 

그냥 UI 같은 경우에는 Physics Raycaster가 없어도 잘 작동하지만

 

2D, 3D 오브젝트의 경우 각각의 레이캐스터를 메인카메라 추가해주어야됩니다.

 

처음에 이걸 몰라서 한참 헤맸던 기억이 있네요.

 

아무튼 이제 실행하고 확인해봅니다.

 

 

 

 

원하는 대로 잘 구현됐습니다.

 

 

반응형

댓글