如何制作一个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

posted @ 2017-08-14 17:46  萌新小L  阅读(572)  评论(0编辑  收藏  举报