您好,欢迎来到Unity之家!   unity.jb51.net 
  • 首 页
  • 你问我答
  • 当前位置:首页 > 学习培训 > Unity编程 >
    鼠标拖拽
    时间:2015-03-30 09:56 来源:Unity之家 作者:unity.jb51.net 浏览:收藏 挑错 推荐 打印


    实现鼠标拖拽物体,拾起与放下。


    代码如下:


    using System.Collections;
    
    public class clickmove : MonoBehaviour 
    {	
    	//下面的函数是当鼠标触碰到碰撞体或者刚体时调用,我的碰撞体设置是mesh collider,然后别忘了,给这个collider添加物理材质
    	
    	//值得注意的是世界坐标系转化为屏幕坐标系,Z轴是不变的
    	IEnumerator OnMouseDown()
    	{
    		//将物体由世界坐标系转化为屏幕坐标系	,由vector3 结构体变量ScreenSpace存储,以用来明确屏幕坐标系Z轴的位置
    		Vector3 ScreenSpace = Camera.main.WorldToScreenPoint(transform.position);
    		//完成了两个步骤,1由于鼠标的坐标系是2维的,需要转化成3维的世界坐标系,2只有三维的情况下才能来计算鼠标位置与物体的距离,offset即是距离
    		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();
    		}
    	}
    }



    (责任编辑:脚印)
    免责声明:Unity之家部分内容来源于互联网,如有侵权,请联系我们,本站将立即进行处理。
    标签:Unity之家