모바일게임 6주차
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: 시계방향
룰렛정지 원리
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 값을 조금씩 줄이기
문제
- 왼쪽마우스버튼을 누르면 시계반대방향으로, 오른쪽마우스버튼을 누르면 시계방향으로 룰렛이 회전하도록 ?,??를 완성하시오.
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. 환경설정
- 기본 룰렛
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 쓸 수 있으므로 수정하지 않고도 스마트폰에서 그대로 실행 가능
안드로이드 개발자 옵션 설정하기
- 개발자 옵션을 선택하려면 설정 → 디바이스 정보(휴대 전화 정보) → 소프트웨어 정보 → 빌드 번호에서 일곱 번 탭을 누름
- ‘개발자 모드가 실행되었습니다’는 문장이 나오면 설정 화면으로 돌아가 디바이스 정보에 개발자 옵션이 표시되어 있는지 확인