본문 바로가기

Unity/▶ Game Development: Dodge

[Dodge] #6. 바닥 회전

728x90
반응형

게임 난이도 증가: 바닥 회전

Rotator 스크립트 생성

프로젝트 > Create > C# Script 생성

using System.Threading.Tasks.Dataflow;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Rotator : MonoBehaviour
{
    // Start is called before the first frame update
    public float rotationspeed = 60f;

    // Update is called once per frame
    void Update()
    {
        TransformBlock.Rotate(0f,rotationspeed,0f);
    }
}

Rotator 메서드

TransformBlock.Rotate(float xAngle,float yAngle,float zAngle);

Rotator 메서드는 인자로 X, Y, Z 축에 대한 회전 값을 받고, 현재 회전 상태에서 입력된 값만큼 상대적으로 더 회전한다.

Udate 메서드가 실행될 때마다 매 프레임마다 인자로 받은 값 만큼 회전한다.

이때 Rotator 메서드는 한 프레임에 인자 값 만큼 회전한다는 점에 주의하자. 따라서 우리가 원하는 주기로 설정하기 위해선 시간 간격을 고려해야 한다.

 

하지만 각 컴퓨터마다 성능이 다르므로 Udate 메서드 안에 작성된 코드는 초당 프레임이 다른 경우를 고려해야 한다. 이를 해결하기 위해선 초당 프레임의 역수를 회전 값에 곱한다.

Rotator 스크립트 수정

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

public class Rotator : MonoBehaviour
{
    // Start is called before the first frame update
    public float rotationspeed = 60f;

    // Update is called once per frame
    void Update()
    {
        transform.Rotate(0f,rotationspeed,0f);
    }
}

Time.deltaTime 값은 프레임의 주기이자 초당 프레임의 역수를 취한 값이다. 따라서 Time.deltaTime를 회전값에 곱하면 주기를 1초로 맞출 수 있다.

참조: 2022.03.01 - [분류 전체보기] - 💫유니티 메서드💫

불러오는 중입니다...

 

 

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

public class Rotator : MonoBehaviour
{
    // Start is called before the first frame update
    public float rotationspeed = 60f;

    // Update is called once per frame
    void Update()
    {
        transform.Rotate(0f,rotationspeed*Time.deltaTime,0f);
    }
}
728x90
반응형

'Unity > ▶ Game Development: Dodge' 카테고리의 다른 글

[Dodge] #7. 게임 완성  (1) 2022.03.02
[Dodge] #5. 탄알 생성기  (0) 2022.02.26
[Dodge] #4. 탄알 생성  (0) 2022.02.25
[Dodge] #3. 스크립트 개선하기  (0) 2022.02.24
[Dodge] #2. 플레이어  (0) 2022.02.04
댓글