Unity Ray射线跟随鼠标

一、射线跟随鼠标点击位置

Unity Ray射线跟随鼠标

Vector3 hitpoint = Vector3.zero;

void Update()
    {
        ShowClickLine();
    }

void ShowClickLine() {
        // 按下鼠标左键发射射线
        if (Input.GetMouseButtonDown(0))
        {
            // 使用主摄像机创建一根射线,射线的方向是鼠标点击的位置(从摄像头位置到鼠标点击位置的一条射线)
            Vector3 screenPoint = Input.mousePosition;
            ray = Camera.main.ScreenPointToRay(screenPoint);

            // 使用物理类检查射线的碰撞,如果点击物体存在
            if (Physics.Raycast(ray, out hit))
            {
                hitpoint = hit.point;
            }
        }

        Debug.DrawRay(transform.position, hitpoint - transform.position, Color.red);
    }

二、射线实时跟随鼠标位置

Unity Ray射线跟随鼠标

void Update()
    {
        ShowLine();
    }

void ShowLine()
    {
        //返回一条射线从摄像机通过一个屏幕点
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hitInfo = new RaycastHit();
        //(射线的起点和方向,hitonfo将包含碰到碰撞器的更多信息,射线的长度)有碰撞时,返回真
        if (Physics.Raycast(ray, out hitInfo, 100))
        {
            //显示检测到的碰撞物体的世界坐标
            print(hitInfo.point);
            Debug.DrawLine(transform.position, hitInfo.point, Color.red);
        }
    }

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容