1. 程式人生 > >unity實現滑鼠點選後拖拽物體

unity實現滑鼠點選後拖拽物體

我們經常要在unity中實現,滑鼠點選物體後,選中物體。然後物體跟隨滑鼠,直到拖拽到指定物體位置,也就是吸附到指定物體上去。

(1)此案例中有兩個物體。

(2)tougu001和tougu002,附加的程式碼分別是 BLtougu001和BLTriggerTouGu002

(3)tougu001 Inspector面板如下:

(4)tougu002 Inspector面板如下:

(5)tougu001 程式碼

using UnityEngine;
using System.Collections;

public class BLtougu001 : MonoBehaviour {
    public BLTriggerTouGu002 m_BLTriggerTouGu002;

    public float mousestate = 0f;

    public Vector3 V3;

    public Camera cam;

    RaycastHit hit;
    // Use this for initialization
    void Start () {
        V3 = transform.position;
        cam = GameObject.Find("Main Camera").GetComponent<Camera>();
    }
 
 // Update is called once per frame
 void Update () {
        Ray ray = cam.ScreenPointToRay(Input.mousePosition);
        if (Physics.Raycast(ray, out hit) && Input.GetMouseButtonDown(0)&&hit.transform.gameObject.name == "tougu001")
        {
                mousestate = 1;
        }

        else if (Input.GetMouseButtonUp(0) && m_BLTriggerTouGu002.tougustate == 0)
        {
            mousestate = 0;
            transform.position = V3;

        }
        else if (Input.GetMouseButtonUp(0)&& m_BLTriggerTouGu002.tougustate==1)
        {
            mousestate = 0;

        }


        if (mousestate == 1&& m_BLTriggerTouGu002.tougustate!=2)
        {
            Vector3 Pos = Camera.main.WorldToScreenPoint(transform.position);
            Vector3 mousePos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, Pos.z);
            transform.position = Camera.main.ScreenToWorldPoint(mousePos);

        }

    }
}

(6)tougu002 程式碼

using UnityEngine;
using System.Collections;

public class BLTriggerTouGu002 : MonoBehaviour {
    public BLtougu001 m_BLtougu001;
    public GameObject tougu;
    public float tougustate = 0f;
    private AudioSource audio_BLTriggerTouGu002;

    // Use this for initialization
    void Start () {
        tougu = GameObject.Find("tougu001");
        audio_BLTriggerTouGu002 = GetComponent<AudioSource>();
    }
 
 // Update is called once per frame

        void OnTriggerStay(Collider col)

        {
             if(tougustate!=2)
              tougustate = 1;
            if (col.tag == "touGu" && m_BLtougu001.mousestate == 0 && tougustate==1)
            {
        
              tougu.transform.position = transform.position;
                 tougustate = 2;
                transform.parent.SendMessage("CountBone", true);
            audio_BLTriggerTouGu002.Play();
            }
        }

    void OnTriggerExit(Collider col)

    {
        if (tougustate != 2)
        {
            tougustate = 0;
        }
    }

}

 

相關推薦

unity實現滑鼠物體

我們經常要在unity中實現,滑鼠點選物體後,選中物體。然後物體跟隨滑鼠,直到拖拽到指定物體位置,也就是吸附到指定物體上去。 (1)此案例中有兩個物體。 (2)tougu001和tougu002,附加

Unity實現滑鼠地面的任意位置,則角色會立即走到滑鼠的位置

一、建立一個角色,並給角色新增 CharacterController 控制器,這裡以簡單的Capsule物體作為角色示例,如下所示: 二、編寫控制角色移動的指令碼  RayDemo2_CCWalking.cs /*** * * Title: * 射

H5實現多圖片預覽上傳,可控制元件介紹

在做圖片上傳時發現一個蠻好用的控制元件,支援多張圖片同時上傳,可以點選選擇圖片,也可以將圖片拖拽到上傳框直接上傳,方便,好用,介面也簡單,基本可以直接放到專案裡使用。 先看看他的樣式: 選擇圖片後

【IOS】實現IOS版的抽屜效果(滑動)

原文連結:http://blog.csdn.net/toss156/article/details/7400065 好像最近,看到好多Android上的抽屜效果,也忍不住想要自己寫一個。在Android裡面可以用SlidingDrawer,很方便的實現。IOS上面就只有自

Jquery滑鼠變色,另一個按鈕顏色還原

轉載一個! Jquery滑鼠點選後變色,點選另一個按鈕顏色還原 <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>

原生js實現滑鼠切換效果

今天之所以寫一篇關於js的程式碼實現,一方面是因為個人習慣用jquery編寫程式碼,另一方面是因為github這個大平臺拋棄了jquery。 Jquery是一個js庫,極大簡化js程式設計,使用方便,相容性好,這篇文章就以一個例子來說明jq和js的編寫差別。 首先我們看一下效果圖:

Unity射線/右鍵某一點會使物體跟隨至滑鼠位置/計算目標物體距離滑鼠位置的距離

public class MyRay : MonoBehaviour { public GameObject GameObject;//要例項化的物體 粒子特效 public GameObject Player; private Animation ani;

Unity滑鼠控制人物移動,就像英雄聯盟一樣

首先,建立一個Cube和Plane using System.Collections; using System.Collections.Generic; using UnityEngine; public class Move : MonoBehavi

Unity射線&自動尋路/右鍵某一點會使物體跟隨至滑鼠位置/計算目標物體距離滑鼠位置的距離

public class MyRay : MonoBehaviour { public GameObject GameObject;//要例項化的物體 粒子特效 public GameObject Player; // private Animation ani; priva

[原始碼和文件分享]使用mouse_event函式實現滑鼠模擬

背景 如果你對外掛有過一些瞭解,那麼滑鼠、鍵盤的模擬功能,肯定是學外掛的入門必修技術。所謂的滑鼠模擬、鍵盤模擬,就是不需要物理點選、物理按鍵,純粹使用程式設計手段,實現和物理點選、物理按鍵相同功能的操作。 當然,根據使用的程式設計技術,不同模擬效果也不同。初學者必修的當然是在應用層使用mou

qcustomplot滑鼠在座標軸顯示值

首先上圖看下要實現的效果:即圖中有兩條曲線,滑鼠點選後顯示橫座標的值,以及與兩條曲線交點的縱座標的值。注意:本例只是實現了座標值的顯示,所以顯示的值和曲線值不符,滑鼠點選的事件可以自行實現。參照網址:http://www.qcustomplot.com/index.php/t

unity實現滑鼠和單物體

今天分享一下這兩天寫的一些程式碼,關於如何在unity中實現滑鼠框選物體,達到類似於在windows下選擇檔案的目標。第一次接觸unity的時候做了一個簡單的遊戲,當時就是卡在了滑鼠選擇這一步上,後來由於時間關係也沒有去深入研究,這幾天有時間又拿出來看了一下,發現其實很簡單,

UGUI下UI的和3D的

using UnityEngine; using System.Collections; using UnityEngine.UI; using UnityEngine.EventSystems; public class ObjCheck : MonoBehaviour ,IBeginDragHandle

iOS抽屜效果、二級選單(滑動)

好像最近,看到好多Android上的抽屜效果,也忍不住想要自己寫一個。在Android裡面可以用SlidingDrawer,很方便的實現。IOS上面就只有自己寫了。其實原理很簡單就是 UIView 的移動,和一些手勢的操作。 // // 

IOS效果實現物件引數的傳遞

IOS點選實現的方式: 1、使用UIButton,這個不用說大家都知道: UIButton *btn=[[UIButton allloc] init]; [btn addTarget:self action:@selector(OnTapBtn:) forControlEv

js實現滑鼠獲取相對於整個頁面的位置

<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> <html> <head>

Android Instrumentation 模擬、傳送keycode、焦點異常丟失。

Instrumentation模擬點選,拖拽,向系統傳送keycode。 需要注意的幾點: Android系統座標系,X軸正方向為右,Y軸正方向為下(與數學座標系相反) 所有事件在傳送時均需要在Thread中執行,否則會報異常。 模擬輸入法種特殊

Egret滑鼠產生一個子彈

建立一個bullet類: class bullet extends egret.Sprite{    public constructor(color,x,y,r){   //建構函式。        super();  //繼承        var bullet_obj=

Unity實現滑鼠

滑鼠拖拽好像只能用於UI物件,暫時好像是這樣的,如有誤,我後面會更新。一:NGUI實現    NGUI的更簡單,只需直接覆寫OnDragRelease()方法//拖拽結束時呼叫 protected override void OnDragDropRelease(GameObj

unity 滑鼠物體旋轉 變色 動移動

public Camera camera; Ray ray; RaycastHit hitInfo; Vector3 offset; GameObject obj;//獲取點選到的物體 public GameObject tr