본문 바로가기

포트폴리오/졸업작품

[MetaEdu] 플레이어의 이름 표시

본 프로젝트에서는 플레이어들을 구별하기 위해 각 캐릭터 위에 각각의 캔버스를 통해 이름을 표시할 수 있도록 하였다.

캔버스의 텍스트는 캐릭터가 생성된 후, 캐릭터의 스크립트에서 가져올 수 있도록 하였다.

본 프로젝트에서는 Photon 클라우드를 사용하여 멀티플레이를 가능하게 하였기에 각각의 LocalPlayer.NickName에

원하는 이름을 설정한 후, PhotonView의 이름을 통해 각각 플레이어의 이름을 적용시켰다.

using Photon.Pun;

public class PlayerController : MonoBehaviourPunCallbacks
{
    public PhotonView PV;
    public TextMeshProUGUI 이름표;

    void Awake()
    {
        이름표.text = PV.IsMine ? PhotonNetwork.LocalPlayer.NickName : PV.Owner.NickName;
    }
}

이제 캐릭터는 자신의 이름표를 머리 위에 띄울 수 있게 되었지만, 여기엔 치명적인 문제가 있었는데...

이와 같이 이름표의 방향이 정해져 있어서 읽기 난해하다는 문제였다.


이를 해결하기 위해 방법을 찾던 중, 교수님을 통해 빌보드 기법이란 것을 알게 되었다.

 

빌보드 기법이란, 객체가 계속해서 카메라의 정면으로만 보이도록 하는 기술로,

주로 2D 스프라이트에서 많이 사용되는 기법이다. 

사용방법은 간단한데 캔버스에 다음의 스크립트를 넣기만 하면 된다.

public class Billboard : MonoBehaviour
{
    Transform cam;
    
    void Start()
    {
        cam = Camera.main.transform;
    }
    
    void Update()
    {
        transform.LookAt(transform.position + cam.rotation * Vector3.forward, cam.rotation * Vector3.up);
    }
}

스크립트의 내용은 메인 카메라의 위치 정보를 가져온 후,

LookAt() 메소드를 사용하여 항상 카메라의 정면으로 회전하게 해준다.

짜잔! 완성이다.