知识点
- 向量
- 射线检测
- 坐标转换
思路
- 使用射线检测获取射线检测点与模型对象之间的偏移量 (世界空间)
- 使用相机的坐标转换获取检测点与鼠标位置之间的偏移量 (屏幕空间)
- 拖拽时,更新模型位置
代码示例
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
文章来源:https://www.toymoban.com/news/detail-631905.html
到了这里,关于相机可见区域,使用鼠标拖拽模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!