相机可见区域,使用鼠标拖拽模型

这篇具有很好参考价值的文章主要介绍了相机可见区域,使用鼠标拖拽模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

知识点

  1. 向量
  2. 射线检测
  3. 坐标转换

思路

  1. 使用射线检测获取射线检测点与模型对象之间的偏移量 (世界空间)
  2. 使用相机的坐标转换获取检测点与鼠标位置之间的偏移量 (屏幕空间)
  3. 拖拽时,更新模型位置

代码示例

using UnityEngine;
public class TestDrag : MonoBehaviour
{
    public Vector3 worldSpaceOffest;
    public Vector3 screenSpaceOffest;
  
    public Vector3 hitPointInScreenSpacePos;
    public Vector3 hitPoinitInWorldSpacePos;

    RaycastHit hit;

    private void OnMouseDown()
    {
    	//射线检测相交点
        Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 100f);
        //记录相交点与对象之间的偏移
        worldSpaceOffest = transform.position - hit.point;
        //记录相交点与鼠标指针之间的偏移
        screenSpaceOffest = Camera.main.WorldToScreenPoint(hit.point) - Input.mousePosition;
    }

    private void OnMouseDrag()
    {
    	//更新屏幕偏移位置
        hitPointInScreenSpacePos = Input.mousePosition + screenSpaceOffest;
        //获取屏幕偏移位置在世界空间中的位置
        hitPoinitInWorldSpacePos = Camera.main.ScreenToWorldPoint(hitPointInScreenSpacePos);
        //更新对象的位置
        transform.position = hitPoinitInWorldSpacePos + worldSpaceOffest;
    }
}

文章来源地址https://www.toymoban.com/news/detail-631905.html

到了这里,关于相机可见区域,使用鼠标拖拽模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【OpenGL】杂谈一、通过鼠标拖拽实现相机绕空间中的某点进行球面旋转查看

    这是我最近遇到的一个问题,如题所示,我需要通过鼠标拖拽实现相机绕点的球面旋转,原本的想法很简单,类似笔记八、摄像机中提到的那样,从聚焦中心点的视角出发,将鼠标移动的距离xoffset和yoffset转换为yaw和pitch角,然后计算出该视角的向量,与球面求交从而得到相机

    2024年02月02日
    浏览(32)
  • Unity用鼠标拖拽UI,UI跟随鼠标移动

    先上效果 继承几个拖拽的接口 IBeginDragHandler, IDragHandler,IEndDragHandler 计算下偏移量,转换下坐标系 限制下可拖拽的范围,我设置的是canvas的大小 欢迎大佬多多来给萌新指正,欢迎大家来共同探讨。 如果各位看官觉得文章有点点帮助,跪求各位给点个“一键三连”,谢啦~ 声明

    2024年02月06日
    浏览(52)
  • Unity实现鼠标拖拽多物体(拖拽单物体的拓展)

    学习了B站UP主OneCredit【Unity快速教学】鼠标拖曳甩动物件BV1qK4y1d7iZ的教学视频后 拓展了一下功能,实现多个物体也可以拖拽,互不受影响 主要是做了一个检测,在鼠标上物体才能被拖拽 目录 bool Drag 拖拽物体的实现 解决摄像机视角的影响 绑定刚体,写好需要用到的变量 Dr

    2024年03月24日
    浏览(45)
  • Unity 鼠标控制 UI 放大、缩小、拖拽

    2024年02月12日
    浏览(42)
  • unity实现鼠标拖拽物品移动

    unity实现物品拖拽,3D创景需要注意的是一个屏幕坐标转换为世界坐标和世界坐标转换屏幕坐标,熟悉他们之间的转化,就没什么难度了 从摄像机发射一条射线,通过射线检测到鼠标点击的物体,将物品的世界坐标转换为屏幕坐标 将鼠标的位置为,鼠标点击的XY轴和物品的

    2024年02月11日
    浏览(49)
  • Unity中鼠标控制3D物体进行拖拽

    拖拽 1 、获取3D物体在世界坐标的位置转换屏幕坐标 2、鼠标在屏幕的坐标与物体在屏幕的坐标Z轴进行拟合 3、获取3D物体与拟合出来的坐标的偏移量 4、通过向量投影得到移动坐标 5、上干货,附带手指控制,手指控制逻辑同鼠标一样 自由拖拽 自由拖拽同上不同的是 获取3D物

    2024年03月26日
    浏览(35)
  • unity限制相机可移动区域(box collider)

    1.创建一个空对象并命名为box(什么名字都可以 但要与代码中的一致) 2.选中box在属性面板点击add component添加一个box collider组件 3.把box collider的大小设置到你想限制的区域范围大小(我直接设置成场景的大小) 3.在相机脚本定义一个变量box(用于选中)刚刚创建的box对象 4

    2024年02月08日
    浏览(28)
  • unity2d里实现鼠标拖拽物体的功能

    在 Unity 中实现鼠标拖拽物体的功能需要使用到 Unity 的 Physics 系统。 要实现鼠标拖拽物体,你需要在场景中添加以下内容: 一个 Rigidbody 2D 组件,用于控制物体的运动。 一个 Box Collider 2D 组件,用于检测鼠标与物体的碰撞。 一个脚本,用于监听鼠标的输入,并在鼠标按下时拖

    2024年02月11日
    浏览(31)
  • unity 模型在scene场景中看不到,在game视图可见

    这个问题出现的原因是:在编辑器中进行了如下设置:  上图左侧的眼睛图标的作用就是显示或隐藏物体。 另一种情况: 这是对层级的显示或隐藏。  

    2024年02月09日
    浏览(21)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包