中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Unity3D拖動任意對象GameObject移動到任意地方

發布時間:2020-10-20 04:09:19 來源:網絡 閱讀:7604 作者:速度速度撒 欄目:游戲開發

今天不是很忙,研究了一下拖拽GameObject移動到任意位置,沿x軸和z軸移動,其他的也就不說了,上代碼:

using UnityEngine;
using System.Collections;

public class DragAndDrog : MonoBehaviour {

    private GameObject target;
    private bool isMouseDrag;
    private Vector3 screenPosition;
    private Vector3 offset;
	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
        GameObjectDragAndDrog();
	
	}

    //任意拖拽

    private GameObject ReturnGameObjectDrag(out RaycastHit hit)
    {
        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;
    }

    //拖拽Updata
    private void GameObjectDragAndDrog()
    {
        if (Input.GetMouseButtonDown (0))
        {
            RaycastHit hitInfo;
            target = ReturnGameObjectDrag(out hitInfo);
            if (target != null)
            {
                isMouseDrag = true;
                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)
        {

            Vector3 currentScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z);
            Vector3 currentPosition = Camera.main.ScreenToWorldPoint(currentScreenSpace) + offset;
            target.transform.localPosition = new Vector3(currentPosition.x, currentPosition.y, currentPosition.z);

        }
    }

}

本腳本可以加載任意一個對象GameObject,場景中所有帶Collider的對象,當鼠標點擊拖動時候都可以沿x和z軸拖動。之前,都是要拖動那個GameObject就會寫一個腳本掛在上面,今天實現了不用每一個要拖動的GameObject都掛載腳本,也不用將移動的GameObject賦給某個變量。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

罗源县| 台州市| 邛崃市| 贵德县| 衡南县| 航空| 牡丹江市| 长丰县| 龙海市| 张家口市| 喀喇| 高雄县| 平邑县| 邢台县| 察雅县| 灵川县| 韶关市| 广西| 明水县| 育儿| 临猗县| 拜城县| 阿克陶县| 嘉祥县| 高尔夫| 兴安盟| 佳木斯市| 遵义县| 贵南县| 兴文县| 白沙| 泾源县| 土默特右旗| 句容市| 安阳市| 广南县| 中方县| 贺兰县| 布拖县| 怀集县| 大连市|