반응형
3.4.1 스크립트의 역할
- 클릭하면 룰렛을 회전시키되 시간이 흐르면 룰렛의 회전 속도를 점점 줄여서 멈추도록 하는 구조로 작성
- 룰렛을 회전시키는 <<컨트롤러 스크립트>> 를 작성
- 클릭하면 일정한 속도로 회전한다는 스크립트
3.4.2 룰렛 스크립트 작성하기
※ 클릭하면 일정 속도로 회전하는 스크립트
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RouletteController : MonoBehaviour
{
float rotSpeed = 0;
void Start()
{
// 프레임레이트를 60으로 고정한다.
Application.targetFrameRate = 60;
}
// Update is called once per frame
void Update()
{
// 클릭하면 회전 속도를 설정한다.
if (Input.GetMouseButtonDown(0))
{
this.rotSpeed = 10;
}
// 회전 속도만큼 룰렛을 회전시킨다.
transform.Rotate(0,0, this.rotSpeed);
}
}
- rotSpeed는 회전각을 설정한 것이다.
- GetMouseButtonDown은 클릭해서 클릭이 눌린 상태에서 True를 한번 반환한다.
- GetMouseButtonUp은 클릭해서 클릭에 떼진 상태에서 True를 한번 반환한다.
- GetMouseButton은 클릭해서 누르는 동안 계속 True를 반환한다.
3.5.1 룰렛에 스크립트 적용하기
드래그&드롭으로 작성한 스크립트를 룰렛에 추가한다.
- rotSpeed 가 양수면 반시계 방향으로 회전한다
- rotSpeed 가 음수면 시계 방향으로 회전한다.
3.6.1 회전 속도를 줄이는 방법
- 회전 속도를 줄이기 위해서 속도 변수인 rotSpeed 값을 조금씩 줄이면 된다.
- rotSpeed에 감쇠 계수 (ex. 0.96)을 곱해서 총 60프레임 뒤에 멈추게끔 그래프 형태로 속도가 줄게 하면 된다.
- 지수함수처럼 감속하게끔 해야 한다. 계수 값을 더 적게 변경할 수록 감속 크기를 크게 할 수 있다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RouletteController : MonoBehaviour
{
float rotSpeed = 0;
void Start()
{
// 프레임레이트를 60으로 고정한다.
Application.targetFrameRate = 60;
}
// Update is called once per frame
void Update()
{
// 클릭하면 회전 속도를 설정한다.
if (Input.GetMouseButtonDown(0))
{
this.rotSpeed = -10;
}
// 회전 속도만큼 룰렛을 회전시킨다.
transform.Rotate(0,0, this.rotSpeed);
this.rotSpeed *= 0.996f;
// 어느정도 멈췄다 싶으면 0으로 초기화 하기 위해서 값을 확인 용도로 console에 찍음
Debug.Log(this.rotSpeed);
}
}
- this.rotSpeed *= 0.996f; 의 값을 추가해줌으로써 룰렛이 서서히 멈추게 된다.
- 새로 클릭한 경우에 다시 10의 속도로 시작하기 때문에 돌아가기 시작한다.
- 책에서 나온 예시대로 0.96f를 곱하니 너무 빨리 멈춰서 룰렛의 효과가 아닌것 같아서 계수의 값을 더 했다.
- rotSpeed 가 일정 구간이 되면 0으로 통보하고 결과를 출력하게끔 하는 스크립트가 필요
- 책에서 예제는 여기까지다
반쪽짜리 예제를 통해 어느정도 기능 구현이 필요하기 때문에 이 부분에 대해서 개인적으로 추가적으로 다룰 예정이다.
반응형
'개발 > 유니티(UNITY)' 카테고리의 다른 글
5-1 유니티로 화살 피하기 게임 만들기 (0) | 2023.10.25 |
---|---|
4장 자동차 움직이는 게임 만들기 (0) | 2023.09.12 |
3.3 씬에 오브젝트 배치하기 (0) | 2023.09.10 |
3장 오브젝트를 배치하고 움직이는 방법 (0) | 2023.09.09 |
2.9 Vector 클래스 사용하기 (0) | 2023.09.09 |