Roulette

dev bourgeois·2023년 11월 21일

Unity VR/AR

목록 보기
2/8
post-thumbnail

게임 기획하기

게임에는 ‘사용자 입력’에 따라 움직이는 것이 하나라도 있어야 한다.

*게임 리소스 생각하기

  • 1단계: 화면에 놓일 오브젝트를 모두 나열
  • 2단계: 오브젝트를 움직일 수 있는 컨트롤러 스크립트 정함
  • 3단계: 오브젝트를 자동으로 생성할 수 있는 제너레이터 스크립트 정함
  • 4단계: UI 갱신할 수 있도록 감독 스크립트 준비
  • 5단계: 스크립트를 만드는 흐름 생각

Roulette 단계별 게임 리소스

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 값에 감쇠 계수를 곱하면 된다.
업로드중..

0개의 댓글