当前位置: 移动技术网 > IT编程>开发语言>c# > Unity实现鼠标点2D转3D进行旋转

Unity实现鼠标点2D转3D进行旋转

2020年06月23日  | 移动技术网IT编程  | 我要评论
本文实例为大家分享了unity实现鼠标点2d转3d进行旋转的具体代码,供大家参考,具体内容如下代码如下:using unityengine;public class gunfollowmouse :

本文实例为大家分享了unity实现鼠标点2d转3d进行旋转的具体代码,供大家参考,具体内容如下

代码如下:

using unityengine;

public class gunfollowmouse : monobehaviour {
  public recttransform uguicanvas;
  public camera maincamera;
  //摄像机旋转的缓动速率
  private float rotatespeed = 5;
  void start () {
 
 }
 
 void update () {
    //定义一个世界坐标的鼠标点
    vector3 mousepos;
    //获取当前canvas下鼠标的二维坐标点 转化为三维 out出来
    recttransformutility.screenpointtoworldpointinrectangle(uguicanvas,
      new vector2(input.mouseposition.x, input.mouseposition.y),
      maincamera, out mousepos
      );
    //炮台的旋转角度
    float angle;
    //向量dirmouse为鼠标的向量减去枪的起始向量得到枪到鼠标位置的方向向量
    vector3 dirmouse = mousepos - transform.position;
    angle = vector3.angle(dirmouse, vector3.up);//直接得到两个向量之间的夹角,这个角度是没有正负的
    if (mousepos.x > transform.position.x)
    {
      angle = - angle;
    }
    transform.localrotation = quaternion.lerp(transform.localrotation, quaternion.euler(0, 0, angle)
      , time.deltatime * rotatespeed);
 }
}

旋转效果如下图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网