using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class UIAnamationMain : MonoBehaviour
{
[SerializeField] private Transform point; //보스의 게이지 위치 (월드상)
[SerializeField] private Transform bossGauge;
[SerializeField] private Canvas canvas;
[SerializeField] private Camera uiCamera;
void Start()
{
}
void Update()
{
//Canvas 의 Render Mode가 Overlay일경우
//월드 위치를 스크린 위치로 변환
//Vector2 screenPosition = Camera.main.WorldToScreenPoint(point.position);
////스크린 좌표를 -> Canvas의 RectTransform로컬좌표로 변환
//RectTransform canvasRectTransform = canvas.GetComponent<RectTransform>();
//Vector2 canvasLocalPosition;
//RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRectTransform, screenPosition, null, out canvasLocalPosition);
//Debug.Log(canvasLocalPosition);
//bossGauge.localPosition = canvasLocalPosition;
//Canvas의 Render Mode가 Camera일경우 ---UICamera로 셋팅
//월드 위치를 Canvas의 RectTransform의 월드 위치로 변환
bossGauge.position = GetWorldPositionToRectTransformWorldPosition(point.position);
}
private Vector3 GetWorldPositionToRectTransformWorldPosition(Vector3 worldPosition)
{
Vector2 screenPosition = RectTransformUtility.WorldToScreenPoint(uiCamera, worldPosition);
Vector3 rtnWorldPosition;
RectTransform canvasRectTransform = canvas.GetComponent<RectTransform>();
RectTransformUtility.ScreenPointToWorldPointInRectangle(canvasRectTransform, screenPosition, uiCamera, out rtnWorldPosition);
return rtnWorldPosition;
}
}
'게임개발 > 게임플랫폼 응용 프로그래밍' 카테고리의 다른 글
데미지 텍스트 만들기 2 : DoTween으로 만들기 (0) | 2024.03.11 |
---|---|
데미지 텍스트 만들기 1 : 애니메이션으로 만들기 (0) | 2024.03.11 |
스프라이트 이미지 선명하게 바꾸기 (0) | 2024.03.08 |
좀비 서바이버 (4) 좀비 AI (0) | 2024.03.08 |
좀비 서바이버 (3) 플레이어 체력 UI 만들기 (0) | 2024.03.08 |