用户登录
用户注册

分享至

unity 拖动物体

  • 作者: 善良的高富帅
  • 来源: 51数据库
  • 2020-10-02
先确保物体a、b都有碰撞器
点击鼠标首先判断是否生成过物体a,如果未生成过则生成a,否则继续判断是否生成过物体b。
当物体a和b都生成了之后
然后在在Update函数中调用Input.getmousebuttondown,由相机向鼠标点击处发射射线,判断是否选中了物体b,由Input.getmousebutton获取持续拖动状态并移动物体b,然后判断Input.getmousebuttonup判断结束点位置是否足够贴近物体a,是则将物体b放置物体a位置



  可以用unity射线判断,也可以用其他插件仿照例子去做,例如:fingergesture?、easytouch?插件。
//?目前鼠标点击和手指拖拽的点击是通用的,代码在这里,你可以试试。

ienumerator?onmousedown()??
???{??

???????vector3?screenspace?=?camera.main.worldtoscreenpoint(transform.position);??


???????vector3?offset?=?transform.position-camera.main.screentoworldpoint(new?vector3(input.mouseposition.x,input.mouseposition.y,screenspace.z));??

???????debug.log("down");??

???????//当鼠标左键按下时??
???????while(input.getmousebutton(0))??
???????{??
???????????//得到现在鼠标的2维坐标系位置??
???????????vector3?curscreenspace?=??new?vector3(input.mouseposition.x,input.mouseposition.y,screenspace.z);?????
???????????//将当前鼠标的2维位置转化成三维的位置,再加上鼠标的移动量??
???????????vector3?curposition?=?camera.main.screentoworldpoint(curscreenspace)+offset;??????????
???????????//curposition就是物体应该的移动向量赋给transform的position属性????????
???????????transform.position?=?curposition;??
???????????//这个很主要??
???????????yield?return?new?waitforfixedupdate();??
???????}??


???}



  实现方式如下:

1. 先确保物体a、b都有碰撞器。
2. 点击鼠标首先判断是否生成过物体a,如果未生成过则生成a,否则继续判断是否生成过物体b。
3. 当物体a和b都生成了之后。然后在在Update函数中调用Input.getmousebuttondown,由相机向鼠标点击处发射射线,判断是否选中了物体b。
4. 由Input.getmousebutton获取持续拖动状态并移动物体b,然后判断Input.getmousebuttonup判断结束点位置是否足够贴近物体a,是则将物体b放置物体a位置即可。
软件
前端设计
程序设计
Java相关