본문 바로가기
개발/Unity

유니티 - 드래그로 오브젝트 위, 아래로 움직이기 (Drag Object in Y-Axis)

by 피로물든딸기 2022. 4. 14.
반응형

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)



오브젝트를 클릭하여 드래그하면 위, 아래로 움직이도록 해보자.

 

오브젝트를 클릭할 때, 마우스의 위치를 먼저 기억해두기 위한 변수와 speed 변수를 만든다.

    Vector3 clickPoint;
    float upDownSpeed = 5.0f;

 

오브젝트를 클릭하면 마우스의 위치를 기억해둔다.

    void OnMouseDown()
    {
        clickPoint = Input.mousePosition;
    }

 

마우스를 드래그할 때, 이전의 위치와 현재 위치의 차이를 이용하여 오브젝트의 y 값을 변경한다.

마지막에는 다시 현재의 위치를 clickPoint에 저장한다.

    void OnMouseDrag()
    {
        Vector3 diff = Input.mousePosition - clickPoint;
        Vector3 pos = transform.position;

        pos.y += diff.y * Time.deltaTime * upDownSpeed;
        transform.position = pos;

        clickPoint = Input.mousePosition;
    }

 

이제 움직일 오브젝트에 스크립트를 추가하고 테스트해보자.

 

오브젝트가 위/아래(y축)로 움직인다.

 

최종 코드는 아래와 같다.

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

public class UpAndDown : MonoBehaviour
{
    Vector3 clickPoint;
    float upDownSpeed = 5.0f;

    void OnMouseDown()
    {
        clickPoint = Input.mousePosition;
    }

    void OnMouseDrag()
    {
        Vector3 diff = Input.mousePosition - clickPoint;
        Vector3 pos = transform.position;

        pos.y += diff.y * Time.deltaTime * upDownSpeed;
        transform.position = pos;

        clickPoint = Input.mousePosition;
    }
}

 

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

반응형

댓글