zoukankan      html  css  js  c++  java
  • 2D物体一直朝向某个2D物体(LookAt2D)

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Look2D : MonoBehaviour {
    
        [SerializeField]
        private Transform _targetPos;
        private void Update()
        {
            transform.eulerAngles = LookTargetAngle(transform, _targetPos.position);
        }
        public Vector3 LookTargetAngle(Transform playerTrans, Vector3 targetPos)
        {
           
            float dx = targetPos.x - playerTrans.transform.position.x;
            float dy = targetPos.y - playerTrans.transform.position.y;
            float rotationZ = Mathf.Atan2(dy, dx) * 180 / Mathf.PI;
            //得到最终的角度并且确保在 [0, 360) 这个区间内
            rotationZ -= 90;
            //获取增加的角度
            float originRotationZ = playerTrans.eulerAngles.z;
            float addRotationZ = rotationZ - originRotationZ;
            //超过 180 度需要修改为负方向的角度
            if (addRotationZ > 180)
            {
                addRotationZ -= 360;
            }
            //应用旋转
            return new Vector3(0, 0, playerTrans.eulerAngles.z + addRotationZ);
        }
    
    }
  • 相关阅读:
    QEMU编译及使用方法
    C++中的算法
    C++继承
    gcc savetemps选项
    C++ overload、override、overwrite
    拷贝构造函数与拷贝赋值
    C++中的顺序容器
    C++中的虚函数(1)
    C++中lambda的实现(1)
    正确的时间做适合的事
  • 原文地址:https://www.cnblogs.com/weiqiangwaideshijie/p/10477236.html
Copyright © 2011-2022 走看看