当前位置: 移动技术网 > IT编程>开发语言>c# > unity实现鼠标拖住3D物体

unity实现鼠标拖住3D物体

2019年09月08日  | 移动技术网IT编程  | 我要评论

本文实例为大家分享了unity实现鼠标拖住3d物体的具体代码,供大家参考,具体内容如下

把该脚本直接挂在要拖拽的物体上即可

using system.collections;
using system.collections.generic;
using unityengine;

public class modeldrages : monobehaviour 
{

//发射射线的摄像机
private camera cam;
//射线碰撞的物体
private gameobject go;
//射线碰撞物体的名字
public static string btnname;
private vector3 screenspace;
private vector3 offset;
private bool isdrage = false;

// use this for initialization
void start ()
{
  cam = camera.main;
}

// update is called once per frame
  void update ()
{
  //整体初始位置
  ray ray = cam.screenpointtoray(input.mouseposition);
  //从摄像机发出到点击坐标的射线
  raycasthit hitinfo;
  if (isdrage == false)
  {
    if(physics .raycast (ray,out hitinfo))
    {
      //划出射线 只有在scene视图中才能看到
      debug.drawline(ray.origin, hitinfo.point);
      go = hitinfo.collider.gameobject;
      print(btnname);
      screenspace = cam.worldtoscreenpoint(go.transform.position);
      offset = go.transform.position - cam.screentoworldpoint(new vector3(input.mouseposition.x, input.mouseposition.y, input.mouseposition.z));
      //物体的名字
      btnname = go.name;
      //组件的名字
    }
    else
    {
      btnname = null;
    }
  }
  if(input.getmousebutton(0))
  {
    vector3 currentscreenspace = new vector3(input.mouseposition.x, input.mouseposition.y, screenspace.z);
    vector3 currentposition = cam.screentoworldpoint(currentscreenspace) + offset;
    if (btnname != null)
    {
      go.transform.position = currentposition;
    }
    isdrage = true;
  }
  else
  {
    isdrage = false;
  }
 }

}

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网