血条

using UnityEngine;

public class TopFollowUI : MonoBehaviour
{
    public GameObject target;
    public GameObject target_ui;

    private Vector3 position_target;
    private Vector3 position_ui;
    
    void Update ()
    {
        float vector_x =  Input.GetAxis("Horizontal");
        float vector_y = Input.GetAxis("Vertical");
        if (vector_x != 0 || vector_y != 0)
        {
            Vector3 vector = new Vector3(vector_x, 0, vector_y);
            target.transform.Translate(vector);
        }
    }

    private void LateUpdate()
    {
        position_target = target.transform.position;
        position_ui = Camera.main.WorldToScreenPoint(position_target);
        target_ui.transform.position = position_ui;
        target_ui.transform.localScale = Get_Scale();
        target_ui.transform.localEulerAngles = Get_Ratation();
    }

    private Vector3 Get_Scale()
    {
        Vector3 pos_c = Camera.main.transform.position;
        Vector3 pos_t = target.transform.position;
        float distance = Vector3.Distance(pos_c, pos_t);
        distance = 10 / distance;
        return Vector3.one * distance;
    }

    private Vector3 Get_Ratation()
    {
        Vector3 pos_c = Camera.main.transform.position;
        Vector3 pos_t = target.transform.position;
        Vector3 targetDir = pos_t - pos_c;
        float angle = Vector3.Angle(Vector3.forward, targetDir);
        return Vector3.up * angle;
    }
}
View Code

猜你喜欢

转载自www.cnblogs.com/Joke-crazy/p/9254360.html