知識(shí)點(diǎn)
- 向量
- 射線檢測(cè)
- 坐標(biāo)轉(zhuǎn)換
思路
- 使用射線檢測(cè)獲取射線檢測(cè)點(diǎn)與模型對(duì)象之間的偏移量 (世界空間)
- 使用相機(jī)的坐標(biāo)轉(zhuǎn)換獲取檢測(cè)點(diǎn)與鼠標(biāo)位置之間的偏移量 (屏幕空間)
- 拖拽時(shí),更新模型位置
代碼示例
using UnityEngine;
public class TestDrag : MonoBehaviour
{
public Vector3 worldSpaceOffest;
public Vector3 screenSpaceOffest;
public Vector3 hitPointInScreenSpacePos;
public Vector3 hitPoinitInWorldSpacePos;
RaycastHit hit;
private void OnMouseDown()
{
//射線檢測(cè)相交點(diǎn)
Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 100f);
//記錄相交點(diǎn)與對(duì)象之間的偏移
worldSpaceOffest = transform.position - hit.point;
//記錄相交點(diǎn)與鼠標(biāo)指針之間的偏移
screenSpaceOffest = Camera.main.WorldToScreenPoint(hit.point) - Input.mousePosition;
}
private void OnMouseDrag()
{
//更新屏幕偏移位置
hitPointInScreenSpacePos = Input.mousePosition + screenSpaceOffest;
//獲取屏幕偏移位置在世界空間中的位置
hitPoinitInWorldSpacePos = Camera.main.ScreenToWorldPoint(hitPointInScreenSpacePos);
//更新對(duì)象的位置
transform.position = hitPoinitInWorldSpacePos + worldSpaceOffest;
}
}
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-631905.html
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-631905.html
到了這里,關(guān)于相機(jī)可見(jiàn)區(qū)域,使用鼠標(biāo)拖拽模型的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!