Unity

마우스로 입력 받기 예제 (Unity)

힘법사 2020. 12. 20. 20:19
728x90

 네 저번 시간에 Unity 설치법을 올려드렸는데요, 혹시 필요하신 분 있으면 들어가서 봐주세요 ^^

Unity 설치하기 (Unity installation) (tistory.com)

 

Unity 설치하기 (Unity installation)

 오랜만에 블로그에 글을 쓰네요... 너무 바빠서 시간이 어떻게 지났는지 모르겠습니다. 이번 겨울부터 Unity를 시작하기로 했습니다!!! 이에 맞춰 블로그에도 글을 업로드 하려합니다. 오늘은 유

himbopsa.tistory.com

각설하고 시작해보겠습니다. 오늘 할 예제는 마우스 입력을 통해 자동차를 조종해보겠습니다.

예제는 책 그림으로 이해하고 만들면서 익히는 유니티 교과서 4장에 수록된 내용입니다.

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

public class CarController : MonoBehaviour
{
    float speed = 0f;
    Vector2 startPos;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            startPos = Input.mousePosition;
        }
        else if (Input.GetMouseButtonUp(0))
        {
            Vector2 endPos = Input.mousePosition;
            float swipelenght = endPos.x - startPos.x;

            speed = swipelenght / 500.0f;
        }
        transform.Translate(speed, 0, 0);
        speed *= 0.98f;
    }
        
}

코드 먼저 보시겠습니다. 먼저 이차원 벡터 startPos, endPos를 이용해 입력을 계산해주게 됩니다. 제일 중요한 마우스의 입력을 받는 법을 보겠습니다.

Input.GetMouseButtonDown(0)// 마우스 왼쪽 버튼을 눌렀을 경우
Input.GetMouseButtonDown(1)// 마우스 오른쪽 버튼을 눌렀을 경우
Input.GetMouseButtonDown(2)// 마우스 가운데 버튼을 눌렀을 경우
Input.GetMouseButtonUp(0)// 마우스 왼쪽 버튼을 눌렀다 떗을 경우
Input.GetMouseButtonUp(1)// 마우스 오른쪽 버튼을 눌렀다 땟을 경우
Input.GetMouseButtonUp(2)// 마우스 가운데 버튼을 눌렀다 땟을 경우

이런 방법으로 마우스를 통해 입력을 받습니다. 이렇게 코딩해놓아도 스마트폰 기반에서도 동일하게 작동합니다.

이를 통해 위의 코드를 해석해보면 마우스를 클릭하고 스와이핑해서 마우스를 땔 경우 그 속도 만큼 자동차의 가속이 붙는다는 것을 알 수 있습니다.

<논리>

1. 마우스를 누른 순간 -> startPos에 순간의 위치를 저장

2. 마우스를 뗀 순간 -> endPos에 마우스를 놓은 순간 위치를 저장

3. sipelength 에 endPos 와 startPos의 x값의 차이를 저장

4. 이를 기반으로 speed를 계산하고 적용

5. 스피드를 매 프레임 마다 2% 줄임

 

이렇게 만들어진 스크립트를 오브젝트에 올리면 동작이 됩니다!

동영상. 시연 영상

 

 

다음 시간에는 더 좋은 내용으로 돌아오겠습니다. 감사합니다 ^^

728x90