码迷,mamicode.com
首页 > 其他好文 > 详细

如何制作一个2D的lookat

时间:2017-08-14 19:00:44      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:转换   document   一个   follow   update   this   form   targe   point   

如果直接使用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

标签:转换   document   一个   follow   update   this   form   targe   point   

原文地址:http://www.cnblogs.com/CasualAttachment/p/7359152.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!