728x90
네 저번 시간에 Unity 설치법을 올려드렸는데요, 혹시 필요하신 분 있으면 들어가서 봐주세요 ^^
Unity 설치하기 (Unity installation) (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
'Unity' 카테고리의 다른 글
애니메이션 만들기 예제 (Unity) (0) | 2020.12.21 |
---|---|
게임 오브젝트 회전 방지(Unity) (0) | 2020.12.21 |
게임 오브젝트 물리법칙 적용(Colider)(Unity) (0) | 2020.12.21 |
게임 오브젝트 물리법칙 적용(Rigidbody)(Unity) (0) | 2020.12.21 |
Unity 설치하기 (Unity installation) (0) | 2020.12.20 |