Zepeto Follow UIGauge

Zepeto 2022. 4. 15. 00:37
반응형
import { ZepetoScriptBehaviour } from 'ZEPETO.Script'
import { Camera, GameObject, Transform, Vector3, Vector2, RectTransformUtility, RectTransform} from "UnityEngine"
import { Slider } from "UnityEngine.UI"

export default class UIHpGauge extends ZepetoScriptBehaviour {

    public target: Transform;
    public  sldier: Slider;
    public canvasRect : RectTransform;
    private zepetoCam : Camera;
    
    public  Init(target : Transform)
    {
        this.target = target;
        this.zepetoCam = GameObject.Find("ZepetoCamera").GetComponent<Camera>();
    }
    
    Update()
    {
        if(this.target != null){

            // Calculate *screen* position (note, not a canvas/recttransform position)
            var canvasPos =  $ref<Vector2>();
            var screenPoint: Vector3 = this.zepetoCam.WorldToScreenPoint(this.target.position);
            
            // Convert screen position to Canvas / RectTransform space <- leave camera null if Screen Space Overlay
            RectTransformUtility.ScreenPointToLocalPointInRectangle(this.canvasRect, new Vector2(screenPoint.x, screenPoint.y + 120), null, canvasPos);

            var tpos = $unref(canvasPos);
            
            // Set
            this.sldier.transform.localPosition = new Vector3(tpos.x, tpos.y, 0);
            //Debug.Log(canvasPos);
        }
    }

}
반응형
: