본문 바로가기
Unity/유니티강의1

Unity Chapter 4 - 3. 소코반 게임 만들기 : 오브젝트 회전 + 시간 간격

by 싸비비 2022. 5. 17.

인프런에 있는 이제민님의 레트로의 유니티 C# 게임 프로그래밍 에센스 강의를 듣고 정리한 필기입니다. 

[강의 들으러 가기]


[오브젝트 계속 회전 시키기]

public Transform myTransform;

이런식으로 Transform 컴포넌트를 가져와도 되지만, Transform 컴포넌트는 모든 오브젝트들이 디폴트로 갖고 있는 컴포넌트이기 때문에, 그냥 변수 선언 없이 소문자 transform 으로 바로 사용 가능하다.

 

transform.Rotate(60, 60, 60);

이렇게 바로 사용 가능하다.

void Update()
    {
        transform.Rotate(60, 60, 60);
    }

계속 회전시키기 위해 update함수내에 이런식으로 작성한다면, 계속 회전은 하지만 문제가 있다.

1초에 60 프레임정도기 때문에, 엄청 빨리 돌게된다. 그래서 시간 간격을 고려해 주어야 한다.

 

[시간 간격 고려하기]

프레임은 컴퓨터 사양마다 다르기 때문에 30프레임이라면 1/30, 60 프레임이라면 1/60 이런식으로 곱해서 1초에 한번만 실행이 되도록 만들어야한다. 이렇게 1/프레임 을 곱해주는데 이것을 유니티에서 지원해준다.

바로 Time.deltaTime 이다.

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

public class Rotator : MonoBehaviour
{
    void Start()
    {
        
    }

    void Update()
    {
        transform.Rotate(60 * Time.deltaTime, 60 * Time.deltaTime, 60 * Time.deltaTime);
    }
}

이렇게 하면 이제 1프레임 당 60도가 아닌, 1초에 60도로 돌아가게 된다.

댓글