unity实现Ray拖动物体,


实现射线拖动物体的功能,能上下左右的拖动,需要下载的小伙伴可以下载看看,

等下会把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,操作更方便哦

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM