본문 바로가기
개발/Unity

유니티 - 드래그로 오브젝트 움직이기 (Move GameObject with Drag)

by 피로물든딸기 2022. 10. 28.
반응형

Unity 전체 링크

드래그로 오브젝트 Y축 회전하기 (Drag to Rotate Object in Y-axis)
드래그로 오브젝트 위, 아래로 움직이기 (Drag Object in Y-Axis)
드래그로 오브젝트 움직이기 (Move GameObject with Drag)
드래그로 땅 위의 오브젝트 움직이기 (Drag and Move on the Ground)
드래그로 평면 위의 오브젝트 움직이기 (Drag and Move on the Plane)
드래그로 블럭 옆으로 한 칸 움직이기 (Drag GameObject Snapped to a Grid)


드래그로 땅 위의 오브젝트 움직이기는 Plane 위에서 오브젝트를 움직였다.

간단히 오브젝트를 마우스를 따라 오브젝트를 움직이려면 OnMouseDrag를 아래와 같이 작성해보자.
OnMouseDrag를 이용하였으므로 움직이려는 오브젝트에 콜라이더가 있어야 한다.

    void OnMouseDrag()
    {
        float distance = Camera.main.WorldToScreenPoint(transform.position).z;

        Vector3 mousePos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, distance);
        Vector3 objPos = Camera.main.ScreenToWorldPoint(mousePos);

        transform.position = objPos;
    }


WorldToScreenPoint를 이용해 World 좌표를 스크린의 좌표로 전환하는데, 이때 z 좌표가 카메라의 표준 위치이다.
그리고 ScreenToWorldPoint가 다시 스크린의 마우스 좌표를 오브젝트의 좌표로 전환한다.

게임을 실행하면 아래와 같이 마우스를 따라 오브젝트가 움직인다.


특정 좌표축 고정하기

이제 objPos의 축을 강제로 설정하고 position에 대입하면 특정 평면만 고정하면서 움직이는 것이 가능하다.

	objPos.y = 0;
	transform.position = objPos;


y축을 고정한 결과 평면 위를 움직이게 된다.


x축을 고정하면 x축이 고정된 채로 마우스를 따라 오브젝트가 움직인다.


최종 코드는 다음과 같다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ObjectDrag : MonoBehaviour
{
    void OnMouseDrag()
    {
        float distance = Camera.main.WorldToScreenPoint(transform.position).z;

        Vector3 mousePos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, distance);
        Vector3 objPos = Camera.main.ScreenToWorldPoint(mousePos);

        //objPos.z = 0;
        objPos.x = 0;
        transform.position = objPos;
    }
}

 

Unity Plus:

 

Easy 2D, 3D, VR, & AR software for cross-platform development of games and mobile apps. - Unity Store

Have a 2D, 3D, VR, or AR project that needs cross-platform functionality? We can help. Take a look at the easy-to-use Unity Plus real-time dev platform!

store.unity.com

 

Unity Pro:

 

Unity Pro

The complete solutions for professionals to create and operate.

unity.com

 

Unity 프리미엄 학습:

 

Unity Learn

Advance your Unity skills with live sessions and over 750 hours of on-demand learning content designed for creators at every skill level.

unity.com

반응형

댓글