三九宝宝网宝宝百科宝宝知识

求助:Unity3D用C脚本写一个鼠标拖拽功能

01月09日 编辑 39baobao.com

[找一套动态的鼠标指针最好是动物的]QQ空间漂亮的鼠标图案又多又漂亮,如果能下载下来该多好啊,那就动手试试吧! 首先进入qq空间,点击“ 装扮空间”→选择“小装饰” →“鼠标” 看!!好多漂亮的鼠标^O^ 找一个自己喜欢...+阅读

要完成拖拽. /* * 用到了unity3d非常好的协同机制实现这一点,OnMouseDown事件表示鼠标已作了射线判断得到了对象。 * 拖拽时保持z轴不变,因为屏幕是xy二维的,空间是三维的。 * */ IEnumerator OnMouseDown () { var camera = Camera.mainCamera; if (camera) { //转换对象到当前屏幕位置 Vector3 screenPosition = camera.WorldToScreenPoint (transform.position); //鼠标屏幕坐标 Vector3 mScreenPosition=new Vector3 (Input.mousePosition.x, Input.mousePosition.y, screenPosition.z); //获得鼠标和对象之间的偏移量,拖拽时相机应该保持不动 Vector3 offset = transform.position - camera.ScreenToWorldPoint( mScreenPosition); print ("drag starting:"+transform.name); //若鼠标左键一直按着则循环继续 while (Input.GetMouseButton (0)) { //鼠标屏幕上新位置 mScreenPosition = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, screenPosition.z); // 对象新坐标 transform.position=offset + camera.ScreenToWorldPoint (mScreenPosition); //协同,等待下一帧继续 yield return new WaitForFixedUpdate (); } print ("drag compeleted"); } } ---------------------------分割线 下面是unity自带的,在Scripts资源包里有拖拽代码,这个拖拽物体必须附加Rigidbody刚体组件。

DragRigidbody.js var spring = 50.0; var damper = 5.0; var drag = 10.0; var angularDrag = 5.0; var distance = 0.2; var attachToCenterOfMass = false; private var springJoint : SpringJoint; function Update () { // Make sure the user pressed the mouse down if (!Input.GetMouseButtonDown (0)) return; var mainCamera = FindCamera(); // We need to actually hit an object var hit : RaycastHit; if (!Physics.Raycast(mainCamera.ScreenPointToRay(Input.mousePosition), hit, 100)) return; // We need to hit a rigidbody that is not kinematic if (!hit.rigidbody || hit.rigidbody.isKinematic) return; if (!springJoint) { var go = new GameObject("Rigidbody dragger"); var body : Rigidbody = go.AddComponent ("Rigidbody") as Rigidbody; springJoint = go.AddComponent ("SpringJoint"); body.isKinematic = true; } springJoint.transform.position = hit.point; if (attachToCenterOfMass) { var anchor = transform.TransformDirection(hit.rigidbody.centerOfMass) + hit.rigidbody.transform.position; anchor = springJoint.transform.InverseTransformPoint(anchor); springJoint.anchor = anchor; } else { springJoint.anchor = Vector3.zero; } springJoint.spring = spring; springJoint.damper = damper; springJoint.maxDistance = distance; springJoint.connectedBody = hit.rigidbody; StartCoroutine ("DragObject", hit.distance); } function DragObject (distance : float) { var oldDrag = springJoint.connectedBody.drag; var oldAngularDrag = springJoint.connectedBody.angularDrag; springJoint.connectedBody.drag = drag; springJoint.connectedBody.angularDrag = angularDrag; var mainCamera = FindCamera(); while (Input.GetMouseButton (0)) { var ray = mainCamera.ScreenPointToRay (Input.mousePosition); springJoint.transform.position = ray.GetPoint(distance); yield; } if (springJoint.connectedBody) { springJoint.connectedBody.drag = oldDrag; springJoint.connectedBody.angularDrag = oldAngularDrag; springJoint.connectedBody = null; } } function FindCamera () { if (camera) return camera; else return Camera.main; }

以下为关联文档:

蓝牙鼠标连接不上电脑怎么办1、一般蓝牙鼠标不好用,你先检查一下是否电池没电了。假如你在你电脑上的蓝牙设置里看蓝牙鼠标已连好的情况下。换下电池就行。 2、另外一种情况我们右击桌面我的电脑选设备...

Windows XP启动脚本在哪儿找Windows 脚本是带有如下文件扩展名的文件:.wsf、.vbs、.js。 (如果自己的电脑里面存在启动脚本的话,可以设置电脑显示扩展名。然后输入.wsf、.vbs、.js来查找并确认了。) 如果双...

如何利用按键精灵制作奇迹连击脚本武器技能放“1”、衔接技能放“2”、终止技能放“3” 脚本: [General]Description=我的脚本BeginHotkey=121BeginHotkeyMod=0PauseHotkey=0PauseHotkeyMod=0StopHotkey=123St...

微软Designer4 0蓝牙鼠标键盘套装怎么样Designer4.0蓝牙鼠标键盘套装 该键鼠的蓝牙鼠标采用了流线型设计,支持无线蓝牙4.0技术,帮助用户的笔记本或平板摆脱鼠标线和接收器的束缚。微软蓝影技术可以让鼠标在沙发,地毯,...

微软desigber蓝牙鼠标怎么连接电脑MAC安装XP后蓝牙无线鼠标的安装链接办法: 1.控制面板-Bluetooth设备-设备-添加-我的设备已经设置并且准备好,可以查找(打勾)-下一步-搜索你的设备中-找到设备后,双击进入-不使用...

微软的蓝牙鼠标怎么连win71)首先点击添加设备,在此之前确保蓝牙鼠标的电源开关以及配对开关全都打开; 2)发现鼠标设备,显示名称“bluetooth laser travel mouse”,选择此设备点击下一步; 3)选择“不使用代码...

微软Arc Touch蓝牙鼠标怎么样微软的 Arc Touch 鼠标也出了好多代了,但直到今年,才终于升级到了不用接收器的蓝牙版本。先是 Surface 专属,之后在九月时又加推了灰色的普通版。而后者就是笔者今天评测的主角...

微软 Sculpt舒适滑控蓝牙鼠标怎么样人体工程学设计,使用手感舒适,按键略感浑厚。 1:指感稍软, 声音也偏闷,不如有些键盘按键声来的清脆,但对于不喜吵闹的人来说,也许更好。 2:按键反应也似不如其它键盘灵敏,打字比以前...

我想写个unity3D C脚本鼠标拖动物体该怎么办呀这是目前我看到的最精简的,仅一个事件完成拖拽./* * 用到了unity3d非常好的协同机制实现这一点,OnMouseDown事件表示鼠标已作了射线判断得到了对象。 * 拖拽时保持z轴不变,因为...

推荐阅读
图文推荐