实现射线拖动物体的功能,能上下左右的拖动,需要下载的小伙伴可以下载看看,
等下会把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,操作更方便哦