
게임에는 ‘사용자 입력’에 따라 움직이는 것이 하나라도 있어야 한다.
*게임 리소스 생각하기

1단계: 화면에 놓일 오브젝트를 모두 나열
-룰렛, 바늘
2단계: 오브젝트를 움직일 수 있는 컨트롤러 스크립트 정함
-움직이는 오브젝트를 찾음 → 룰렛
-움직이는 오브젝트에는 오브젝트의 움직임을 제어하는 대본 필요 → ‘컨트롤러 스크립트’
➡️ 룰렛 컨트롤러 스크립트 준비
3단계: 오브젝트를 자동으로 생성할 수 있는 제너레이터 스크립트 정함
-게임을 플레이할 때 생성될 오브젝트를 찾음
-이러한 오브젝트를 생성하는 스크립트 → ‘제너레이터 스크립트’
-오브젝트를 생성하는 공장
-룰렛 게임에는 필요X
4단계: UI 갱신할 수 있도록 감독 스크립트 준비
-UI를 조작하거나 진행 상황을 판단하려면 게임 전체를 관장해야 됨
-룰렛 게임에는 필요X
5단계: 스크립트를 만드는 흐름 생각
<컨트롤러 → 제너레이터 → 감독 스크립트> 순서로 만듦
➡️ 룰렛은 간단해서 컨트롤러만!
*룰렛 컨트롤러에 필요한 동작
-화면을 탭하면 회전을 시작, 시간이 흐르면 속도를 줄이고, 멈춤
-어떤 스크립트를 만드는가, 어떤 순서로 만드는가를 생각
-각 스크립트 → 이러한 동작 실현!
*씬에 오브젝트 배치
-스프라이트 : Scene 뷰에 배치한 이미지
-오브젝트 위치 조절 : Inspector 창 Position (x, y, z) 설정
*2D 게임에서 z축 기본값 0
-씬을 촬영하는 카메라가 z=-10 위치에
-스프라이트의 z 좌표값이 카메라의 위치보다 작으면 스프라이트가 카메라에 비치지x 게임 화면에 표시x
*스크립트 역할
-클릭하면 룰렛을 회전시키되, 시간이 흐르면 회전 속도 줄여서 멈추는 구조 작성
➡️ 컨트롤러 스크립트
using System.Collections;
using Sytem.Collectons.Generic;
using UnityEngine;
public class RouletteController : MonoBehaviour
{
float rotSpeed = 0; // 회전속도 (초기화)
void Start()
{
// 프레임레이트를 60으로 고정
// 어떤 성능이든 같은 속도로 움직이도록 처리
// 디바이스 성능에 따른 실행 결과의 차이 없애
Application.targetFrameRate=60;
}
void Update()
{
// 클릭된 순간에 한 번만 true 반환 -> 룰렛 한번만 돌리니까!
// 인수가 0->마우스 왼쪽, 1->오른쪽, 2->마우스휠
// 클릭하면 회전 속도를 설정함
if (input.GetMouseButtonDown(0))
{
this.rotSpeed = 10;
}
// Rotate 메소드 : 게임 오브젝트를 현재 각도에서
// 인수값만큼 회전시킴 / x, y, z
// 여기서는 z축을 중심으로 회전시켜야 됨
// 회전 속도만큼 룰렛을 회전시킴
// x, y 회전 0, z축만 회전
transform.Rotate(0, 0, this.rotSpeed);
// 룰렛을 감속시킴 / 감쇠계수
this.rotSpeed *= 0.96f;
}
}


*스크립트 적용 - 회전 정지
-회전 속도 멤버 변수인 rotSpeed 값을 조금씩 줄이면 된다.
-각 프레임의 rotSpeed 값에 감쇠 계수를 곱하면 된다.