2 回答
TA贡献1815条经验 获得超6个赞
将CrossPlatformInput包导入到您的项目中,您实际上可以继续使用 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 函数的设计使得它们在移动设备上具有相当明显的解释,即使没有“鼠标”本身。屏幕上的单次触摸报告为左键单击,只要手指触摸屏幕,Input.mousePosition 属性就会给出触摸的位置。这意味着具有简单鼠标交互的游戏通常可以在桌面和移动平台之间透明地运行。当然,转换通常比这简单得多。桌面游戏可以使用多个鼠标按钮,而手机游戏可以一次检测屏幕上的多次触摸。
TA贡献1946条经验 获得超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);
}
}
此外,您可以使用触摸阶段来确定您希望在触摸期间的哪个时间点发生某些事情。
- 2 回答
- 0 关注
- 225 浏览
添加回答
举报