공부 좀 해라★彡/Unity

[Unity 스킬] 간단 기초 내용2

요미 ★ 2024. 12. 18. 17:51

MonoBehaviour란?

  • Unity에서 모든 스크립트는 기본적으로 MonoBehaviour를 상속받아야 오브젝트에 붙일 수 있습니다.
  • MonoBehaviour는 Unity의 기본 라이프사이클(생명 주기) 메서드들을 포함합니다.

주요 MonoBehaviour 메서드

  1. Start()
    • 오브젝트가 활성화될 때 한 번 호출됩니다.
    • 초기화 작업에 사용됩니다.
  2. Update()
    • 매 프레임 호출됩니다.
    • 게임 로직, 키 입력 처리 등 지속적으로 실행되는 작업에 적합합니다.

-> 더 아려면 Unity 생명주기(라이프사이클) ㄱㄱ 

Time.deltaTime

  • 역할: 마지막 프레임 이후 경과한 시간을 반환합니다.
  • 활용 이유: 프레임 간 일관된 동작을 구현하기 위해 사용됩니다.
  • 예: transform.Translate(Vector3.forward * speed * Time.deltaTime)
  • Time.deltaTime이 왜 필요할까요?
    • 프레임 속도가 빨라지면 Time.deltaTime이 없다면 움직임도 빨라집니다 ㄷㄷ
    • Time.deltaTime은 프레임 간 경과 시간을 계산해서, 어떤 컴퓨터에서도 일관된 움직임을 보장해준답니다. 
      • Time.deltaTime 없이: 초당 100프레임에서 100만큼 움직이고, 30프레임에서는 30만큼 움직임
      • Time.deltaTime 사용: 프레임 속도에 상관없이 동일한 거리만큼 움직임

네... 야러분 이제 이걸로 간단 큐브 움직일수 있다면 믿으시겠어용/?

네 믿어요

 

using UnityEngine;

public class CubeMovement : MonoBehaviour
{
    public float speed = 5f; // 큐브 이동 속도

    void Update()
    {
        // 이동 벡터 초기화
        Vector3 movement = Vector3.zero;

        // 키 입력 감지
        if (Input.GetKey(KeyCode.W)) // W키 -> 앞
            movement += Vector3.forward;
        if (Input.GetKey(KeyCode.S)) // S키 -> 뒤
            movement += Vector3.back;
        if (Input.GetKey(KeyCode.A)) // A키 -> 왼쪽
            movement += Vector3.left;
        if (Input.GetKey(KeyCode.D)) // D키 -> 오른쪽
            movement += Vector3.right;

        // 움직임 적용 (Time.deltaTime 사용)
        transform.Translate(movement * speed * Time.deltaTime);
    }
}

 

이거 가져다가 큐브 오브젝트에 넣어주시면 됩니다 (그정도 할 수 있죠?)

 

더보기

큐브 움직임 테스트💻

  • Unity Editor에서 3D Object > Cube를 클릭해서 큐브를 하나 만들어줘요
  • 위에서 작성한 CubeMovement 스크립트를 저장하고, 큐브에 붙여주세요.
  • Play 버튼을 눌러 W, A, S, D 키를 눌러보세요. 큐브가 움직이는 걸 볼 수 있어요