Egloos 728x90

구글 애널리틱스


2016/03/07 20:18

유니티 ] 월드스페이스 오브젝트의 위치에 맞춰 UI 이동시키기 ▷ 프로그래밍 관련



  전부터 화면 속이 객체 좌표를 따라 텍스트가 따라가도록 하고 싶었는데, 그 방법을 찾아서 일단 기록해둡니다.


 ‘Render Mode’ 속성이 ‘Screen Space - Overlay’인 Canvas 위의 UI 오브젝트를, 월드스페이스의 오브젝트의 자표에 맞춰 이동시키는 방법이다.



 UI용 캔버스에 Text 객체를 추가한다.


 위에서 추가한 Text 오브젝트를 따라다녀야 할 GameObject에 연결시켜준다.


 스크립트 코드.

using UnityEngine;

using UnityEngine.UI;

using System.Collections;


public class ElementalTextShower : MonoBehaviour {


public Text elementalText;

public Camera camera;

private Transform target;


// Use this for initialization

void Start () {

target = GetComponent<Transform> ();

}

// Update is called once per frame

void Update () {

Vector3 screenPos = camera.WorldToScreenPoint (target.position);

float x = screenPos.x;


elementalText.transform.position = new Vector3(x, screenPos.y, elementalText.transform.position.z);

}

}



 여기서 중요한 것은 WorldToScreenPoint 함수다. 여기의 인수로 추적할 객체를 넣으면, World Space의 좌표가 아닌 Screen 좌표로 반환한다. 이 좌표를 위의 Text 좌표로 적용하면 World Space의 객체를 따라다니도록 할 수 있다.


결과 화면
(화면이 너무 작아서 잘 안 보이니 전체 화면으로 보시는 걸 추천합니다.)



  근데 이 기능 찾는 것도 상당히 오래 걸렸는데, 계속 공부하다보니 UI 계열 객체들을 아예 World Space로 보내는 방법도 있더군요. 아직은 공부중이라 정확한 방법을 모르겠습니다만...

  계속 공부를 하다보면 알게 되겠죠?

덧글

  • ㅇㅇ 2018/06/23 01:00 # 삭제 답글

    도움이 되었습니다. 정말 감사합니다
댓글 입력 영역

애드센스336x280

알라딘TTB-Egloos(하단-일반)



이 이글루를 링크한 사람 (블랙)

36