欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-05-26 10:42:19
本文实例为大家分享了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);
 }
}

旋转效果如下图:

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

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

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