鼠標拖動物移動在遊戲設計上用的很是多,像飛機射擊遊戲,我來分享下個人思路:算法
個人思路: 由於鼠標的屏幕座標是二維的,物體是世界座標,三維的。首先將鼠標的屏幕座標轉換爲三維的世界座標,這樣爲了計算鼠標與物體位置之間的距離,再將移動後的鼠標的屏幕座標轉換爲世界座標,加上以前的距離量,將和值賦給物體座標,就能夠實現了。設計
C#算法實現:orm
IEnumerator OnMouseDown()
{
//將物體由世界座標系轉換爲屏幕座標系
Vector3 screenSpace = Camera.main.WorldToScreenPoint(transform.position);
//三維物體座標轉屏幕座標
//鼠標的座標系是2維,須要轉換成3維的世界座標系
//只有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();//循環執行,等到固定幀更新
}
}遊戲