1.遊戲物件拖曳方法

using UnityEngine;
using System.Collections;

public class Sample : MonoBehaviour
{    
    void Update()
    {
        if (Input.GetMouseButton(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            if(Physics.Raycast(ray , out hit))
            {
                Vector3 mousePosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 10);
                hit.transform.position = Camera.main.ScreenToWorldPoint(mousePosition);
            }
        }
    }
}

// 補充 你的遊戲物件必須要有Collider射線才偵測的到!

2.UGUI物件拖曳方法

using UnityEngine;
using UnityEngine.EventSystems;
using System.Collections.Generic;
using System.Collections;

public class Sample : MonoBehaviour
{
    void Update()
    {
        if (Input.GetMouseButton(0))
        {
            PointerEventData pointer = new PointerEventData(EventSystem.current);
            pointer.position = Input.mousePosition;

            List<RaycastResult> raycastResults = new List<RaycastResult>();
            EventSystem.current.RaycastAll(pointer, raycastResults);

            if (raycastResults.Count > 0)
            {
                raycastResults[0].gameObject.transform.position = Input.mousePosition;
            }
        }
    }
}

 

上面這兩個方法都是一些基本功能

使用上你可能會發現速度移動太快的話 物件可能就會停住了

那是因為都是在檢查滑鼠指到的位置

如果你速度太快滑鼠就會沒有指到那個物件

就不會執行獲得新的座標了

如果不知道怎麼解決的話可以留言問我喔

也非常感謝到我的FB粉絲專頁按讚

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Weight 的頭像
    Weight

    股市Coding

    Weight 發表在 痞客邦 留言(0) 人氣()