{TIL} Unity 3D 플레이어 데미지 처리 이론

Kwaksang·2024년 5월 27일

TIL

목록 보기
29/37
post-thumbnail

Unity 3D 플레이어 데미지 처리 이론

Chapter .1 TryGetComponent

  • Unity에서 사용하는 메서드로, 게임 오브젝트의 컴포넌트를 가져오는 기능을 제공
  • 특정 게임 오브젝트에 연결되어 있는지 확인 및 연결되어 있다면 가져올 수 있음
// TryGetComponent 메서드 형식

public bool TryGetComponent<T>(out T component) where T : Component;
  1. ref
    • 변수를 참조 형태로 전달하는데 사용됨
    • 변수가 메서드 안에서 변경될 수 있다는 뜻
  2. out
    • 변수를 참조 형태로 전달하는데 사용됨
    • 변수를 전달하기 전에 변수를 초기화 하지 않아도 됨
    • 메서드 안에서는 반드시 할당되어야 함
  3. T
    • 가져오려는 컴포넌트의 타입
    • MonoBehaviour를 상속한 컴포넌트는 모두 사용 가능
  4. Component
    • 컴포넌트를 가져올 때 사용되는 out 매개변수
// 예시

using UnityEngine;

public class Test : MonoBehaviour
{
    private void Start()
    {
        Rigidbody rb;
        
        // Rigidbody 컴포넌트가 있는지 확인하고 가져와라
        if (TryGetComponent<Rigidbody>(out rb))
        {
            // Rigidbody에 3D기준 위방향으로 100만큼의 힘을 더해줘라
            rb.AddForce(Vector3.up * 100f);
        }
        // Rigidbody 컴포넌트가 없으면
        else
        {
            Debug.Log("Rigidbody component not found.");
        }
    }
}
  • Component가 없어도 예외처리를 하지 않고, 있다면 가져와서 사용하기 때문에 게임을 진행시킬 때 더 안전하다는 장점이 있음

Chapter .2 카메라 절두체(뷰 절두체)

  • 피라미드 같은 모양의 윗부분을 밑면에 병렬로 잘라낸 입체 형상인 절두체를 카메라 랜더링에 적용한 것

  • 시야 범위(FOV)와 Near Clipping Plane, Far Clipping Plane 등의 값을 조절해 절두체의 모양을 바꿀 수 있음
  • 랜더링 할 범위를 지정해줄 수 있음

Chapter .3 Corutine

  • 작업을 다수 프레임에 분산하는 메서드
  • Unity에서 코루틴은 실행을 일시 정지하고 제어를 Unity에 반환하지만, 중단한 부분에서 다음 프레임을 계속할 수 있는 메서드
  • 다만, 스레드가 아님
  • 코루틴의 동기 작업은 여전히 메인 스레드에서 실행됨

<좌> 동기식 / <우> 비동기식

  • 동기식은 클라이언트가 실행 중일 때 서버가 실행되지 못함
  • 반대도 마찬가지 서버가 실행 중일 때 클라이언트가 실행되지 못함
  • 비동기는 클라이언트가 실행 중일 때 서버도 함께 실행 가능

<좌> 일반 기능 / <우> 코루틴

  • 다음과 같이 코루틴은 동기식
  • 단일 스레드에서 Unity에 양보해줬다가 코루틴으로 돌아오길 반복하면 실행됨
profile
게임은 재미와 기능!

0개의 댓글