모바일게임 6주차

룰렛 게임

Yihimin
10 min readApr 9, 2024
public class RouletteController : MonoBehaviour {

float rotSpeed = 0; // 회전속도를 저장하는 변수를 선언 및 초기화

void Update() {
// Update 함수는 매 프레임마다 호출되는 함수입니다.

// 마우스 왼쪽 버튼이 눌렸을 때
if (Input.GetMouseButtonDown(0)) {
// 회전 속도를 10으로 설정
this.rotSpeed = 10;
}

// 회전 속도만큼 룰렛을 Z축 기준으로 회전 시킵니다.
transform.Rotate(0, 0, this.rotSpeed);
}
}

룰렛회전 원리

  • +X : 뒤로 덤블링
  • +Y : 오른쪽으로 돎
  • +Z: 반시계방향
  • — X : 앞으로 덤블링
  • — Y : 왼쪽으로 돎
  • — Z: 시계방향
+Z방향

룰렛정지 원리

public class RouletteController : MonoBehaviour {

float rotSpeed = 0; // 회전속도를 저장하는 변수를 선언 및 초기화

void Update() {
// Update 함수는 매 프레임마다 호출되는 함수입니다.

// 마우스 왼쪽 버튼이 눌렸을 때
if (Input.GetMouseButtonDown(0)) {
// 회전 속도를 10으로 설정
this.rotSpeed = 10;
}

// 회전 속도만큼 룰렛을 Z축 기준으로 회전 시킵니다.
transform.Rotate(0, 0, this.rotSpeed);

// 룰렛을 감속시킵니다.
this.rotSpeed *= 0.96f;
}
}
  • rotSpeed 값을 조금씩 줄이기

문제

  1. 왼쪽마우스버튼을 누르면 시계반대방향으로, 오른쪽마우스버튼을 누르면 시계방향으로 룰렛이 회전하도록 ?,??를 완성하시오.
 float rotSpeed = 0; // 회전속도
void Update()
{
if (Input.GetMouseButtonDown(0))
{
this.rotSpeed = 10;
}
if (Input.GetMouseButtonDown(1))
{
? = ??; //this.rotSpeed = -10;
}
transform.Rotate(0, 0, this.rotSpeed);
this.rotSpeed *= 0.96f;
}

2. 왼쪽마우스버튼을 누르면 시계반대방향으로 50의 속도로 돌다가 오른쪽마우스버튼을 누르면 정지하도록 ?,??를 완성하시오.(왼쪽마우스를 눌렀을 경우 속도의 감소는 없음)

 float rotSpeed = 0; // 회전속도
void Update()
{
if (Input.GetMouseButtonDown(0))
{
this.rotSpeed = 50;
}
if (Input.GetMouseButtonDown(1))
{
? = ??; // this.rotSpeed = 0;
}
transform.Rotate(0, 0, this.rotSpeed);
}

3. 다음 소스를 보고 룰렛이 어떻게 회전할 것인가를 설명하시오.

public class roulette2 : MonoBehaviour {

float rotSpeed = 0; // 회전속도
void Update()
{
if (Input.GetMouseButtonDown(1))
{
this.rotSpeed += 3;

}
transform.Rotate(0, 0, this.rotSpeed);

}
}

//반시계방향으로 오른쪽 마우스를 클릭할 때마다 속도에 +3이 더해져 빨라진다.

4. — Y축으로 회전하기 위하여 변경해야 하는 소스를 쓰시오.

float rotSpeed = 0; // 회전속도
void Update()
{
if (Input.GetMouseButtonDown(0))
{
this.rotSpeed = 10; //this.rotSpeed = -10;
}
transform.Rotate(0, 0, this.rotSpeed); //transform.Rotate(0, this.rotSpeed, 0);
this.rotSpeed *= 0.96f;
}

5. 오른쪽 마우스버튼을 누르면 시계반대방향으로 10의 속도로 돌다가 왼쪽마우스를 누르면 Y축으로 회전하도록 소스를 채우시오.

void Update()
{
if (Input.GetMouseButtonDown(0))
{
transform.Rotate( ? ); //0, 10, 0
}
if (Input.GetMouseButtonDown(1))
{
transform.Rotate( ?? ); //0, 0, 10
}
}

실습

0. 환경설정

  1. 기본 룰렛
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RouletteController : MonoBehaviour
{
float rotSpeed = 0;

void Start(){

}

void Update()
{
if(Input.GetMouseButtonDown(0)){
this.rotSpeed = 10;
}

transform.Rotate(0,0, this.rotSpeed);

this.rotSpeed *= 0.96f;

}
}

2.응용: 왼쪽 마우스버튼을 누르면 위에서 봤을 때 시계방향으로, 오른쪽 마우스버튼을 누르면 시계반대방향으로 룰렛이 회전

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

public class RouletteController : MonoBehaviour
{
float rotSpeed = 0;

void Start(){

}

void Update()
{
if(Input.GetMouseButtonDown(0)){
this.rotSpeed = 10;
}

if(Input.GetMouseButtonDown(1)){
this.rotSpeed = -10;
}

transform.Rotate(0, this.rotSpeed, 0);

this.rotSpeed *= 0.96f;

}
}

3. 응용: 왼쪽 마우스버튼을 누르면 뒤에서 앞으로 50의 속도로 돌다가 오른쪽 마우스버튼을 누르면 정지

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

public class RouletteController : MonoBehaviour
{
float rotSpeed = 0;

void Start(){

}

void Update()
{
if(Input.GetMouseButtonDown(0)){
this.rotSpeed = -50;
}

if(Input.GetMouseButtonDown(1)){
this.rotSpeed = 0;
}

transform.Rotate(this.rotSpeed, 0, 0);

this.rotSpeed *= 0.96f;

}
}

4.왼쪽 마우스버튼을 클릭할 때마다 속도가 올라가고, 오른쪽 마우스버튼을 클릭할 때마다 속도가 내려감

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

public class RouletteController : MonoBehaviour
{
float rotSpeed = 0;

void Start(){

}

void Update()
{
if(Input.GetMouseButtonDown(0)){
this.rotSpeed += 3;
}

if(Input.GetMouseButtonDown(1)){
this.rotSpeed -= 3;
}

transform.Rotate(0, 0, this.rotSpeed);

}
}

5. 앱으로 만들기

  • 탭 검출은 클릭을 검출할 때와 마찬가지로 GetMouseButtonDown 쓸 수 있으므로 수정하지 않고도 스마트폰에서 그대로 실행 가능

안드로이드 개발자 옵션 설정하기

  • 개발자 옵션을 선택하려면 설정 → 디바이스 정보(휴대 전화 정보) → 소프트웨어 정보 → 빌드 번호에서 일곱 번 탭을 누름
  • ‘개발자 모드가 실행되었습니다’는 문장이 나오면 설정 화면으로 돌아가 디바이스 정보에 개발자 옵션이 표시되어 있는지 확인
개발자 모드 진입 → 개발자 옵션에서 디버깅 허용
내 파일에서 roulette_lhm 설치
설치되고 메뉴에 뜬 룰렛게임!
실행됨!

--

--