1. 程式人生 > >unity中 拖拽任意的物件

unity中 拖拽任意的物件

孫廣東   2015.8.16 

目的 :  我們能簡單的通過 滑鼠位置 得到目標物件  如果沒有使用剛體元件  

Step - 1: 在3D專案中設定場景.  一個空物件命名為: DragAndDrop   ,和建立一些其他的遊戲物件 如 sphere, cube 等 

- 感覺如下l;


Step - 2: C# 指令碼命名為  "GameobjectDragAndDrop". 

Step - 3: 新增方法:

GameObject ReturnClickedObject(out RaycastHit hit)
    {
        GameObject target = null;
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        if (Physics.Raycast(ray.origin, ray.direction * 10, out hit))
        {
            target = hit.collider.gameObject;
}
        return target;
    }

Step - 4: 在Update 方法中
void Update()
    {
 
        if (Input.GetMouseButtonDown(0))
        {
            RaycastHit hitInfo;
            target = ReturnClickedObject(out hitInfo);
            if (target != null)
            {
                isMouseDrag = true;
                Debug.Log("target position :" + target.transform.position);
                //Convert world position to screen position.
                screenPosition = Camera.main.WorldToScreenPoint(target.transform.position);
offset = target.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z));
            }
        }
 
        if (Input.GetMouseButtonUp(0))
        {
            isMouseDrag = false;
        }
 
        if (isMouseDrag)
        {
            //track mouse position.
            Vector3 currentScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z);
 
            //convert screen position to world position with offset changes.
            Vector3 currentPosition = Camera.main.ScreenToWorldPoint(currentScreenSpace) + offset;
 
            //It will update target gameobject's current postion.
            target.transform.position = currentPosition;
        }
 
    }

Step - 6: 執行程式,然後拖拽物件就OK了啊。。。。

相關推薦

unity 任意物件

孫廣東   2015.8.16 目的 :  我們能簡單的通過 滑鼠位置 得到目標物件  如果沒有使用剛體元件  Step - 1: 在3D專案中設定場景.  一個空物件命名為: DragAndDrop

jquery獲取原生事件物件來解決html5事件的bug

在做一個拖拽demo(九宮格拼圖)時,遇到一個bug,當拖動一張圖片1到另外一張圖片2的位置時,兩個位置的圖片都變成了圖片2,程式碼如下 <script type="text/javascript"> (function($){ var dragSrc; $('li').each

unity 滑鼠物體移動

    private Camera cam;//發射射線的攝像機     private GameObject go;//射線碰撞的物體     private Vector3 screenSpace;     pri

PPT_2010/2013/2016實現在演示過程圖片/形狀

如果有需要在PPT演示過程中簡單拖拽一些元素的功能,那麼這篇文章絕對能幫助你    在上一篇文章分泌蛋白過程操作動畫中提及到實現PPT演示過程中拖拽元素的方法,這篇寫出詳細過程。    先說明幾點:    1、完成後的PPT必須儲存為字尾pptm,而不能是p

JSdemo

html部分 <div id="box"> <div id="drop">此處可以移動拖拽 <span id="close">[關閉]</span> <

Unity動的簡單實現(UGUI以及3D物體)

拖動的基本程式碼如下 [RequireComponent(typeof( RectTransform))] using UnityEngine; using System.Collections; u

如何在Listview其中的子Item移動其位置

最近開發遇到一個需求,需要顯示的物件支援拖拽,一般的物件直接使用dargarea即可。但我用的是Listview來顯示,而且是自己定義的listmodel,可以說是相當的煩。 1、一種情況,如果是使用qml中的listmodel則直接呼叫model的move方法進行移動:核心程式碼為 &nb

unity 物體移動

3D物體拖拽移動 1 獲取滑鼠的螢幕座標 2 將滑鼠座標與相機y軸方向的值,轉換為3d座標,並將改制賦給跟隨滑鼠移動物件 void Update () { // Vector3 vp = Camera.main.ScreenToViewpo

gridpanel排序

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> &

Unity定義統一的物件搜尋介面

我們經常要在Unity中以各種方式搜尋物件。比如按名字搜尋、按tag、layer或者是查詢名字為xxx開頭的物件。本文是介紹以一種統一的介面來搜尋物件。1、定義統一的搜尋介面 /// <summary> /// 遊戲物件搜尋介面 /// &l

unity實現

using System.Collections; using UnityEngine; public class king : MonoBehaviour { // Use this for initialization void Start () {

關於MFC任意物件功能的實現(COleDataSource, COleDropTarget)

    拖拽功能的實現是一個全域性的功能實現,也就是沒有程序之隔,是一個類似windows的檔案拖拽管理和開啟的功能。而下面說記錄的是關於任意內容的全域性拖拽的實現細節。關於相關函式和物件的具體描述可以直接MSDN檢視,這裡就不對其進行詳細的簡介。     大體的實現可

Unity輸出PC端(Windows) 文件到app

unity 路徑 。。 gate orm new 通過 som cos 需求:給策劃們寫一個PC端(Window)的Excel導表工具。本來用OpenFile打開FileExplorerDialog後讓他們自己選擇想要添加的Excel文件就行了,結果有個需求是希望能拖拽Ex

unityScrollRect子物體無法

在拖拽物體上繫結的本指令碼中,重寫一下UGUI的drag相關事件,調ScrollRect的drag等方法 public class DragScrollView : EventTriggerListener {     /// <summary>     ///

Unity2D物體的

public class testButton : MonoBehaviour { public bool isMouseDown = false; private Vector3 la

unity滑鼠物體移動

指令碼附著在物體上,加上collide,非mesh collider </pre><pre name="code" class="csharp">using UnityEngine; using System.Collections; public

Unity UGUIScrollView的與被UGUI事件系統遮蔽的問題

    最近在專案中遇到一個Scroll View相關問題,具體為:在ScrollView中,為例項化出來的toggle添加了OnValueChange的方法,會導致ScrollView的拖拽方法接收不到拖拽資訊。同時經過測試EventSystem中的onDown,onCli

H5文件上傳

ext block point over ive orm children anim 代碼 一:介紹 1.內容摘要    2.主要設計的技術    3.drag與drop事件    4.drag與drop的部分重要代碼    5.File Api   

HTML5——將本地文件到網頁顯示

ctype har char result html blank size func log HTML5標準中的提供的用於文件輸入輸出(I/O)的對象 File: 代表一個文件對象 FileList:

vue實現百度地圖地圖定位功能

.com 元素 偏移量 locals 進行 函數 nco 查看 page 效果如果所示,拖動地圖。中間圖標不動,並且自動獲取地圖當前中心點的經緯度。然後就可以用經緯度做其他的操作了。。。首先查看了百度地圖的api。能實現這個功能最貼近的就是marker。marker