unity实现鼠标拖住3D物体
本文实例为大家分享了unity实现鼠标拖住3D物体的具体代码,供大家参考,具体内容如下
把该脚本直接挂在要拖拽的物体上即可
usingSystem.Collections; usingSystem.Collections.Generic; usingUnityEngine; publicclassModelDrages:MonoBehaviour { //发射射线的摄像机 privateCameracam; //射线碰撞的物体 privateGameObjectgo; //射线碰撞物体的名字 publicstaticstringbtnName; privateVector3screenSpace; privateVector3offset; privateboolisDrage=false; //Usethisforinitialization voidStart() { cam=Camera.main; } //Updateiscalledonceperframe voidUpdate() { //整体初始位置 Rayray=cam.ScreenPointToRay(Input.mousePosition); //从摄像机发出到点击坐标的射线 RaycastHithitInfo; if(isDrage==false) { if(Physics.Raycast(ray,outhitInfo)) { //划出射线只有在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(newVector3(Input.mousePosition.x,Input.mousePosition.y,Input.mousePosition.z)); //物体的名字 btnName=go.name; //组件的名字 } else { btnName=null; } } if(Input.GetMouseButton(0)) { Vector3currentScreenSpace=newVector3(Input.mousePosition.x,Input.mousePosition.y,screenSpace.z); Vector3currentPosition=cam.ScreenToWorldPoint(currentScreenSpace)+offset; if(btnName!=null) { go.transform.position=currentPosition; } isDrage=true; } else { isDrage=false; } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。