如何制作一个2D的lookat

Posted 萌新小L

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何制作一个2D的lookat相关的知识,希望对你有一定的参考价值。

如果直接使用unity自带的API的话,transform.lookat会导致2D物体的X与Y方向的rotation改变(也就是2D物体竖起来了,在canvas里根本都看不到了)

我们需要的是物体在Z轴方向上进行旋转,也就是Z轴方向指向目标物体。

  C#版本:

  1. public Transform target; //目标物体的transform 
  2.     void Update ()
  3.     {
  4.             float angle = 0;
  5.          
  6.             Vector3 relative = transform.InverseTransformPoint(target.position);
  7.             angle = Mathf.Atan2(relative.x, relative.y)*Mathf.Rad2Deg;//这里是计算xy轴商的正切值(tan)和弧度转换的值(360/2π)         This is equal to 360 / (PI * 2)
  8.             transform.Rotate(0,0, -angle);   //如果想要图片转180度就在后面+180
  9.     }

  XLua版本:(red是指针自己,green是要指向的目标的位置)

  function update()
         angle = 0;
              relative = Red.transform:InverseTransformPoint(Green.transform.position);
              angle = CS.UnityEngine.Mathf.Atan2(relative.x, relative.y)*CS.UnityEngine.Mathf.Rad2Deg;
              Red.transform:Rotate(0,0, -angle+180);
  end

以上是关于如何制作一个2D的lookat的主要内容,如果未能解决你的问题,请参考以下文章

如何缩放使用 glm::lookat() 获得的矩阵?

如何使用 glm::lookAt() 旋转对象?

Unity2D如何制作一个炮台追踪主角发射子弹

如何在 Unity 2D 中制作软体弹跳器?

求教如何在Unity中为2D游戏制作技能特效

Unity 2D C#如何在点击时制作面向对象的坐标