實現射線拖動物體的功能,能上下左右的拖動,需要下載的小伙伴可以下載看看,
等下會把demo鏈接發上來,先把代碼貼一下
寫了倆個腳本一個是前后左右拖動,一個是上下拖動的,都是掛在同一個對象上,寫的簡單,不喜勿擾。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ShuiYiTuoDong : MonoBehaviour { Ray ray2; RaycastHit hit2; public Camera cameraa; // Use this for initialization void Start () { } // Update is called once per frame void Update () { if (Input.GetMouseButton(0)) { this.GetComponent<ShengGaoCube>().enabled = false; ray2 = cameraa.ScreenPointToRay(Input.mousePosition); Debug.DrawLine(ray2.origin,hit2.point ); LayerMask lm = 1 << 9; if (Physics.Raycast(ray2, out hit2,lm)) { this.transform.position = new Vector3(hit2.point.x, transform.position.y, hit2.point.z); } } else { this.GetComponent<ShengGaoCube>().enabled = true; } } }
這是第二個
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ShengGaoCube : MonoBehaviour { Ray ray,ray1,ray2; RaycastHit hit,hit1,hit2; public Camera cameraa; // Use this for initialization void Start () { } // Update is called once per frame void Update () { if (Input.GetKey (KeyCode .V)) { this.GetComponent<ShuiYiTuoDong>().enabled = false; if (Input.GetMouseButton(0)) { Debug.DrawLine(transform.position, hit.point); ray = cameraa.ScreenPointToRay(this.transform.position); LayerMask lm = 1 << 9; if (Physics.Raycast(ray, out hit, lm)) { } ray1 = cameraa.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray1, out hit1)) { if (hit1.transform.name == "Cube") { this.transform.position = new Vector3(this.transform.position.x, hit1.point.y, this.transform.position.z); } } } } else { this.GetComponent<ShuiYiTuoDong>().enabled = true; } } }
最后附上demo鏈接:
鏈接:https://pan.baidu.com/s/1DrGHn_j43rcb4hlj4OXnSw
提取碼:mx1c
復制這段內容后打開百度網盤手機App,操作更方便哦
