当前位置: 首页 > news >正文

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

知识点

  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;}
}
http://www.lryc.cn/news/118935.html

相关文章:

  • Vue 2 与 Vue 3 的全面比较
  • Unity学习笔记--如何优雅简便地利用对象池生成游戏对象(进阶版)LRU + 对象池
  • 【Spring专题】Bean的声明周期流程图
  • C++实现俄罗斯方块(源码+详解)
  • 01:STM32点灯大师和蜂鸣器
  • linux pwn 基础知识
  • Unity Poisson分布 【由ChatGPT生成】
  • permission denied while trying to connect to the Docker daemon socket 错误
  • pytorch nn.ModuleList和nn.Sequential的用法笔记
  • SQL | 高级数据过滤
  • ARM架构银河麒麟docker,源码编译安装GDAL
  • (3)原神角色数据分析-3
  • skywalking日志收集
  • ASL国产CS5212规格书 DP转VGA 替代RTD2166低成本方案 兼容IT6516设计原理图
  • 关于Jquery的Validate插件--rules添加自定义方法(强密码验证方法)
  • 股票自动交易接口开发原理及源码分享
  • 2023/8/11题解
  • 构造函数
  • JS 原型与继承
  • 解决 Oracle 数据库中表被锁问题的方案和方法
  • ORACLE行转列、列转行实现方式及案例
  • AI自动驾驶
  • 思维导图在职业规划中的应用:从职业选择到职业发展的思维导图
  • antv l7每次刷新无法加载iconFont
  • 28 玻尔兹曼机
  • 命令提示符之操作基础(Windows)
  • 【C语言】初识C语言+进阶篇导读
  • wxWidgets学习笔记:wxListCtrl使用详解
  • 酷炫的python日志库-loguru
  • html根据图片变换背景色