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

转载于:https://www.cnblogs.com/CasualAttachment/p/7359152.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值