亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

unity3d中怎么實現鼠標控制物體

unity3d中怎么實現鼠標控制物體

波斯汪 2018-10-29 01:00:46
unity3d中怎么實現鼠標控制物體
查看完整描述

1 回答

?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

解決思路就是將世界坐標轉換成屏幕坐標,然后計算物體與鼠標之間移動量,循環鼠標被按下操作,得到鼠標的當前位置,加上計算好的移動量,將新的坐標賦值給物理就行了。主要是開啟一個協同程序(Corountine)來處理
主要代碼如下:
// Use this for initialization
void Start ()
{
StartCoroutine(OnMouseDown());
}

IEnumerator OnMouseDown()
{
//將物體由世界坐標系轉換為屏幕坐標系
Vector3 screenSpace = Camera.main.WorldToScreenPoint(transform.position);//三維物體坐標轉屏幕坐標
//完成兩個步驟 1.由于鼠標的坐標系是2維,需要轉換成3維的世界坐標系
// // 2.只有3維坐標情況下才能來計算鼠標位置與物理的距離,offset即是距離
//將鼠標屏幕坐標轉為三維坐標,再算出物體位置與鼠標之間的距離
Vector3 offset = transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenSpace.z));
while (Input.GetMouseButton(0))
{
//得到現在鼠標的2維坐標系位置
Vector3 curScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenSpace.z);
//將當前鼠標的2維位置轉換成3維位置,再加上鼠標的移動量
Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenSpace) + offset;
//curPosition就是物體應該的移動向量賦給transform的position屬性
transform.position = curPosition;
yield return new WaitForFixedUpdate(); //這個很重要,循環執行
}
}

查看完整回答
反對 回復 2018-11-14
  • 1 回答
  • 0 關注
  • 611 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號