unity中滑鼠拖拽物體移動
指令碼附著在物體上,加上collide,非mesh collider
或者</pre><pre name="code" class="csharp">using UnityEngine; using System.Collections; public class TransFollowMouse : MonoBehaviour { private Vector3 _vec3TargetScreenSpace;// 目標物體的螢幕空間座標 private Vector3 _vec3TargetWorldSpace;// 目標物體的世界空間座標 private Transform _trans;// 目標物體的空間變換元件 private Vector3 _vec3MouseScreenSpace;// 滑鼠的螢幕空間座標 private Vector3 _vec3Offset;// 偏移 void Awake( ) { _trans = transform; } void Update() { if(Input.GetMouseButtonDown(0)) { StartCoroutine(Translate()); } } IEnumerator Translate( ) { Debug.Log("in onmousedonw"); // 把目標物體的世界空間座標轉換到它自身的螢幕空間座標 _vec3TargetScreenSpace = Camera.main.WorldToScreenPoint(_trans.position); // 儲存滑鼠的螢幕空間座標(Z值使用目標物體的螢幕空間座標) _vec3MouseScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, _vec3TargetScreenSpace.z); // 計算目標物體與滑鼠物體在世界空間中的偏移量 _vec3Offset = _trans.position - Camera.main.ScreenToWorldPoint(_vec3MouseScreenSpace); // 滑鼠左鍵按下 while ( Input.GetMouseButton(0) ) { Debug.Log("getmousebutton"); // 儲存滑鼠的螢幕空間座標(Z值使用目標物體的螢幕空間座標) _vec3MouseScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, _vec3TargetScreenSpace.z); // 把滑鼠的螢幕空間座標轉換到世界空間座標(Z值使用目標物體的螢幕空間座標),加上偏移量,以此作為目標物體的世界空間座標 _vec3TargetWorldSpace = Camera.main.ScreenToWorldPoint(_vec3MouseScreenSpace) + _vec3Offset; // 更新目標物體的世界空間座標 _trans.position = _vec3TargetWorldSpace; // 等待固定更新 yield return new WaitForFixedUpdate(); } } }
using UnityEngine; using System.Collections; public class TransFollowMouseForSensors : MonoBehaviour { private Vector3 _vec3TargetScreenSpace;// 目標物體的螢幕空間座標 private Vector3 _vec3TargetWorldSpace;// 目標物體的世界空間座標 private Transform _trans;// 目標物體的空間變換元件 private Vector3 _vec3MouseScreenSpace;// 滑鼠的螢幕空間座標 private Vector3 _vec3Offset;// 偏移 void Awake( ) { _trans = transform; } IEnumerator OnMouseDown( ) { Debug.Log("in onmousedonw"); // 把目標物體的世界空間座標轉換到它自身的螢幕空間座標 _vec3TargetScreenSpace = Camera.main.WorldToScreenPoint(_trans.position); // 儲存滑鼠的螢幕空間座標(Z值使用目標物體的螢幕空間座標) _vec3MouseScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, _vec3TargetScreenSpace.z); // 計算目標物體與滑鼠物體在世界空間中的偏移量 _vec3Offset = _trans.position - Camera.main.ScreenToWorldPoint(_vec3MouseScreenSpace); // 滑鼠左鍵按下 while ( Input.GetMouseButton(0) ) { Debug.Log("getmousebutton"); // 儲存滑鼠的螢幕空間座標(Z值使用目標物體的螢幕空間座標) _vec3MouseScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, _vec3TargetScreenSpace.z); // 把滑鼠的螢幕空間座標轉換到世界空間座標(Z值使用目標物體的螢幕空間座標),加上偏移量,以此作為目標物體的世界空間座標 _vec3TargetWorldSpace = Camera.main.ScreenToWorldPoint(_vec3MouseScreenSpace) + _vec3Offset; // 更新目標物體的世界空間座標 _trans.position = _vec3TargetWorldSpace; // 等待固定更新 yield return new WaitForFixedUpdate(); } } }
如果物體內部需要collider,可以用第一個
如果不流暢,第二個試一下。
相關推薦
unity中滑鼠拖拽物體移動
指令碼附著在物體上,加上collide,非mesh collider </pre><pre name="code" class="csharp">using UnityEngine; using System.Collections; public
unity 滑鼠拖拽物體移動
private Camera cam;//發射射線的攝像機 private GameObject go;//射線碰撞的物體 private Vector3 screenSpace; pri
unity中ScrollRect拖拽子物體無法拖拽
在拖拽物體上繫結的本指令碼中,重寫一下UGUI的drag相關事件,調ScrollRect的drag等方法 public class DragScrollView : EventTriggerListener { /// <summary> ///
Unity2D中使用滑鼠拖動物體移動
昨天用unity開發了一個微信的飛機大戰,效果圖如下。期間遇到了很多問題都一一解決了,印象最深的問題就是如何用滑鼠拖動飛機的移動。今天我就把我的方法拿出來分享。 我的方法是在飛機物體中寫一個指令碼。在Update中先檢測滑鼠是否按下。 程式碼是這樣的: private
HTML5中滑鼠拖拽的事件需要的屬性
draggable:拖拽的屬性 在拖動目標上觸發事件 (源元素): ondragstart - 使用者開始拖動元素時觸發 ondrag - 元素正在拖動時觸發 ondragend - 使用者完成元素拖動後觸發 釋放目標時觸發的事件: ondragenter - 當被滑鼠拖動的物件
js 滑鼠拖拽元素移動
<!DOCTYPE html><html> <head> <title> </title> <style media="screen" type="text/css"> *{ margin: 0; padding: 0; } .box{
Unity—實現滑鼠拖拽
滑鼠拖拽好像只能用於UI物件,暫時好像是這樣的,如有誤,我後面會更新。一:NGUI實現 NGUI的更簡單,只需直接覆寫OnDragRelease()方法//拖拽結束時呼叫 protected override void OnDragDropRelease(GameObj
[OpenGL]用滑鼠拖拽圖形移動
今天做計算機圖形學實驗。題目佈置了寫程式使圖形移動,於是我就寫了這個程式。 使用的環境是Code::Blocks + GLUT,Code::Blocks配置GLUT實現OpenGL的教程可以看這篇: 想要實現用滑鼠拖拽使圖形移動,首先需要考慮兩個問題: 1.如何接受滑鼠
javascript--滑鼠拖拽視窗案例(滑鼠按下,在滑鼠移動過程中,盒子跟著一起移動,滑鼠鬆開,盒子停止移動)
介面如圖所示: 要求:在“資訊註冊”欄,按下滑鼠,然後滑鼠在頁面移動,在滑鼠移動過程中,該視窗跟著滑鼠移動,當滑鼠鬆開的時候,視窗停止移動。點選“關閉”,該視窗隱藏。 實現思路: 1.頁面結構分析:一個大盒子d-box來確定位置,裡面放一個小盒子drop(存放“註冊資訊(可以拖拽”文字和span標籤
unity實現滑鼠點選後拖拽物體
我們經常要在unity中實現,滑鼠點選物體後,選中物體。然後物體跟隨滑鼠,直到拖拽到指定物體位置,也就是吸附到指定物體上去。 (1)此案例中有兩個物體。 (2)tougu001和tougu002,附加
unity 滑鼠拖動 物體旋轉 點選變色 拖動移動
public Camera camera; Ray ray; RaycastHit hitInfo; Vector3 offset; GameObject obj;//獲取點選到的物體 public GameObject tr
Unity中滑鼠點選控制人物移動,就像英雄聯盟一樣
首先,建立一個Cube和Plane using System.Collections; using System.Collections.Generic; using UnityEngine; public class Move : MonoBehavi
unity COC風格畫素完美級的滑鼠拖拽鏡頭
public class PanCamera : BaseCameraMovement { private Plane xzPlane; public Ray ray; private bool inTo
滑鼠拖拽表格table的tr上下移動
小夥伴們肯定在某個專案裡遇到要拖拽table表格的tr或者td那麼下面就來講一下,話不多說直接上程式碼1,引用外掛<script src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script
event滑鼠拖拽(彈框移動)
滑鼠拖拽效果很常見,例如百度的登入頁,點選登入會彈出一個視窗,並且這個視窗可以拖動;首先,要涉及到滑鼠的三個事件,分別為滑鼠按下、移動、鬆開;onmousedown onmousemove onmouseup 下面是程式碼 <!DOCTYPE html> <htm
Unity基礎篇:Unity使用滑鼠拖動2D和3D物體。
/* 首先說一下,Input.mousePosition是滑鼠所在畫素平面內的座標,需要根據自己的需求轉變成世界座標。 Description 描述 The
Unity3d 滑鼠滾動拉近模型、滑鼠右鍵旋轉模型、滑鼠中鍵拖拽模型
滑鼠滾動拉近模型、滑鼠右鍵旋轉模型、滑鼠中鍵拖拽模型 把如下程式碼直接掛在攝像機物件上 using UnityEngine; using System.Collections; public class Script_07_11 : Mon
QML中滑鼠拖動移動ListView中項的位置
在QML開發中,ListView是我們經常用到的控制元件,可以用它給使用者展示出列表,但是往往都是將專案的顯示順序排好後,直接讓ListView顯示出來,亦或者是知道要移動到具體的那一位置,然後調整資料在ListView中的順序來達到要求,現有一種需求,就是用滑鼠拖動某項,
【框架-MFC】禁用滑鼠拖拽標題欄移動視窗
解決方案 過載WM_NCLBUTTONDOWN訊息 BEGIN_MESSAGE_MAP(CSliderDlg, CDialog) ON_WM_NCLBUTTONDOWN() END_MESS
NGUI物件跟隨滑鼠拖拽移動
public Camera WNGUICamera; Vector3 _WoldPosition;//指標的初始位置 // Vector3 _WoldAng; Vector3