我有这段代码可以让宇宙飞船上升,而不是让重力将它压在地板上。
if (Input.touchCount > 0)
GetComponent<Rigidbody2D>().AddForce(Vector2.up * force);
但当我在手机上玩游戏时,游戏会跟踪我是否持续按住/触摸屏幕,并根据它增加我向上的力度。这让它变得非常困难,因为它非常敏感,我需要真正集中注意力并快速真正敲击,以免让它 puf 飞上天空(并撞到屋顶上我游戏中的另一个障碍)。
此外,如果你们中的任何人能给我一些关于如何根据设备屏幕缩放 GUI 的指示,我将非常感激,即使有几个教程我似乎也无法弄清楚,我觉得愚蠢。
最佳答案
您可以使用 bool 变量来确保每次触摸只施加一次力。
private bool touchCont = false;
void Update(){
if (!touchCont && Input.touchCount > 0){
touchCont = true;
GetComponent<Rigidbody2D>().AddForce(Vector2.up * force);
}
if (Input.touchCount == 0){
touchCont = false;
}
}
虽然 FixedUpdate()
通常被推荐用于刚体,但我的算法使用的是 Update()
,因为每次更新时触摸事件都会发生变化。这样,在 bool 变量的帮助下,每个新的触摸事件开始时只添加一次力。
或者,如果您想对每个新触摸施加力,即使它们是并发的,您也可以使用 Input.touches
获取所有触摸。如果任何触摸是 TouchPhase.Began
,则表示它们刚刚开始。
如果您在代码中设置 GUI 大小,一种使 GUI 缩放的方法是您可以使用例如 Screen.width/8
而不是 200
。为了更好地缩放,甚至可以以相同的方式设置字体大小。
关于c# - 如何在 Unity 中为 Android 游戏仅获取 "jump"命令的初始触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30419846/