1인 개발 게임 (Unity)/UNITY

[Unity]드래그 길이 에 따라 이동거리 설정하기 (+ MousePosition 메서드)

Z46 2024. 7. 18. 05:41

안녕하세요 인친님들! 오늘은 스와이프(드래그) 동작을 통해 자동차의 이동 거리를 제어하는 방법에 대해 설명해드릴게요. 스와이프 길이에 따라 자동차의 이동 거리를 다르게 설정해보는 재미있는 방법입니다. 이 방법을 통해 여러분의 게임이 더욱 인터랙티브하고 재미있어질 거에요.

 

스와이프 길이에 따라 이동 거리 설정하기

먼저, 스와이프 길이를 자동차의 초기 속도로 설정해보는 방법을 알아보겠습니다. 스와이프 길이가 길면 자동차가 더 멀리 이동하고, 짧으면 더 짧게 이동하게 되겠죠? 이를 구현하기 위해서는 클릭 시작 지점과 클릭 끝 지점의 차이를 계산하면 됩니다.

 

구현 방법

아래는 Unity에서 이를 구현하는 예제 코드입니다:

 

 

using UnityEngine;

 

public class CarControl : MonoBehaviour

{

    float carSpeed = 0;

    Vector2 startPos; // 클릭 시작 지점

    Vector2 endPos; // 클릭 끝 지점

 

    // Start 메서드에서 프레임레이트 설정

    void Start()

    {

        Application.targetFrameRate = 60;

    }

 

    // Update 메서드에서 자동차 이동과 감속 처리

    void Update()

    {

        // 마우스 버튼을 눌렀을 때 시작 지점 저장

        if (Input.GetMouseButtonDown(0))

        {

            this.startPos = Input.mousePosition; // 클릭 시작 위치 저장

        }

        // 마우스 버튼을 뗐을 때 끝 지점 저장 및 스와이프 길이 계산

        else if (Input.GetMouseButtonUp(0))

        {

            this.endPos = Input.mousePosition; // 클릭 끝 위치 저장

 

            float swipeLength = this.endPos.x - this.startPos.x; // 스와이프 길이 계산

 

            this.carSpeed = swipeLength / 500.0f; // 스와이프 길이로 초기 속도 설정

        }

 

        // 자동차 이동

        transform.Translate(this.carSpeed, 0, 0);

 

        // 서서히 감속

        this.carSpeed *= 0.96f;

    }

}

코드 설명

변수 선언:

 

float carSpeed: 자동차의 현재 속도.

Vector2 startPos: 마우스 클릭 시작 지점.

Vector2 endPos: 마우스 클릭 끝 지점.

 

Start 메서드:

 

Application.targetFrameRate = 60;: 프레임 레이트를 60으로 고정하여 모든 기기에서 동일한 속도로 게임이 실행되도록 합니다.

 

Update 메서드:

 

Input.GetMouseButtonDown(0): 마우스 왼쪽 버튼을 눌렀을 때, 클릭 시작 위치를 저장합니다.

Input.GetMouseButtonUp(0): 마우스 왼쪽 버튼을 뗐을 때, 클릭 끝 위치를 저장하고 스와이프 길이를 계산합니다.

float swipeLength = this.endPos.x - this.startPos.x;: 스와이프 길이를 계산합니다.

this.carSpeed = swipeLength / 500.0f;: 스와이프 길이에 따라 자동차의 초기 속도를 설정합니다.

transform.Translate(this.carSpeed, 0, 0);: 자동차를 현재 속도로 이동시킵니다.

this.carSpeed *= 0.96f;: 자동차 속도를 서서히 감속시킵니다.

실용적인 팁

속도 조절:

 

스와이프 길이를 500으로 나누어 속도를 설정했습니다. 이 값은 여러분의 게임 디자인에 따라 조정할 수 있습니다. 큰 값으로 나누면 속도가 더 느려지고, 작은 값으로 나누면 더 빨라집니다.

 

다양한 입력 처리:

 

이 예제에서는 x축만 사용했지만, y축을 포함하여 대각선 방향으로도 이동할 수 있도록 확장할 수 있습니다.

 

감속 비율 조절:

 

this.carSpeed *= 0.96f;: 감속 비율을 0.96으로 설정했습니다. 이 값은 감속 속도를 결정합니다. 더 천천히 감속하고 싶다면 0.98 또는 0.99, 더 빠르게 감속하고 싶다면 0.90 또는 0.85로 설정해보세요.

 

 

 

[mousePosition 메서드]

->마우스 커서의 현재 위치를 화면 좌표로 반환합니다.

 

검색어: Unity, Translate 메소드, 자동차 이동, 스와이프, 드래그 입력, 게임 개발, Unity 튜토리얼, 게임 프로그래밍, 캐릭터 이동, 감속, 물리 엔진