-
Notifications
You must be signed in to change notification settings - Fork 0
/
TransformOverCharacter.cs
30 lines (26 loc) · 1.06 KB
/
TransformOverCharacter.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TransformOverCharacter : MonoBehaviour
{
public GameObject player;
public Canvas canvas;
public float displacement = 200f;
// Update is called once per frame
void Update()
{
Vector3 uiPos = worldToUISpace(canvas, player.transform.position);
uiPos.y = uiPos.y + displacement;
transform.position = uiPos;
}
public Vector3 worldToUISpace(Canvas parentCanvas, Vector3 worldPos)
{
// Convert the world for screen point so that it can be used with ScreenPointToLocalPointInRectangle function
Vector3 screenPos = Camera.main.WorldToScreenPoint(worldPos);
Vector2 movePos;
// Convert the screenpoint to ui rectangle local point
RectTransformUtility.ScreenPointToLocalPointInRectangle(parentCanvas.transform as RectTransform, screenPos, parentCanvas.worldCamera, out movePos);
// Convert the local point to world point
return parentCanvas.transform.TransformPoint(movePos);
}
}