2 回答

TA貢獻1815條經(jīng)驗 獲得超6個贊
將CrossPlatformInput包導入到您的項目中,您實際上可以繼續(xù)使用 Input.GetMouseButton(xxx)。
using UnityEngine;
using CrossPlatformInput;
public class MyClass : MonoBehaviour {
private Vector2 mousePos;
private Rigidbody2D rb;
private Vector2 offsetClicked;
private Vector2 offsetReleased;
private void Start () {
rb = GetComponent<Rigidbody2D> ();
offsetReleased = transform.position;
}
private void FixedUpdate () {
mousePos = Camera.main.ScreenToWorldPoint (Input.mousePosition);
if (Input.GetMouseButton (0)) {
Vector2 newPos = new Vector2 (
Mathf.Clamp(mousePos.x + offsetClicked.x, GameManager.gm.cameraEdges.w + 0.32f, GameManager.gm.cameraEdges.y - 0.32f),
mousePos.y + offsetClicked.y
);
rb.MovePosition (newPos);
offsetReleased = newPos - (Vector2) Camera.main.transform.position;
} //Clicked
else {
Vector2 newPos = new Vector2 (
Mathf.Clamp (Camera.main.transform.position.x + offsetReleased.x, GameManager.gm.cameraEdges.w + 0.32f, GameManager.gm.cameraEdges.y - 0.32f),
Camera.main.transform.position.y + offsetReleased.y
);
rb.MovePosition (newPos);
offsetClicked = newPos - mousePos;
} //Released
}
}
(見這里:https : //docs.unity3d.com/Manual/CrossPlatformConsiderations.html)
觸摸和點擊
Input.GetMouseButtonXXX 函數(shù)的設計使得它們在移動設備上具有相當明顯的解釋,即使沒有“鼠標”本身。屏幕上的單次觸摸報告為左鍵單擊,只要手指觸摸屏幕,Input.mousePosition 屬性就會給出觸摸的位置。這意味著具有簡單鼠標交互的游戲通常可以在桌面和移動平臺之間透明地運行。當然,轉(zhuǎn)換通常比這簡單得多。桌面游戲可以使用多個鼠標按鈕,而手機游戲可以一次檢測屏幕上的多次觸摸。

TA貢獻1946條經(jīng)驗 獲得超4個贊
不是檢查是否單擊了鼠標按鈕,而是檢查是否存在任何觸摸,然后提取觸摸位置。Input.touches返回最后一幀期間的觸摸列表,因此您可以使用它來查找將mousePos在代碼中替換的觸摸位置。
Touch myTouch;
Vector2 myTouchPosition;
Update()
{
if (Input.touchCount > 0)
{
myTouch = Input.touches[0]; //Get the first touch
myTouchPosition = Camera.main.ScreenToWorldPoint(myTouch.position);
}
}
此外,您可以使用觸摸階段來確定您希望在觸摸期間的哪個時間點發(fā)生某些事情。
- 2 回答
- 0 關注
- 261 瀏覽
添加回答
舉報