先确保物体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位置即可。
Photoshop|
Dreamweaver|
SVG|
WebGL|
Visual Studio|
PowerDesigner|
Eclipse|
Git|
Apache Ant|
Atom|
Composer|
CodeSmith|
Flex|
Gradle|
Maven|
Sublime Text3|
SVN|
Tableau|
Vim|
Chrome开发者工具|
OpenGL|
Unity|
Direct3D|
用户登录
还没有账号?立即注册
用户注册
投稿取消
文章分类: |
|
还能输入300字
上传中....