如何只获得“跳转”的初始触摸;命令在Unity中创建Android游戏
本文关键字:命令 触摸 Unity 游戏 Android 创建 跳转 | 更新日期: 2023-09-27 17:50:35
我用这段代码来让飞船上升,而不是让重力把它压在地板上。
if (Input.touchCount > 0)
GetComponent<Rigidbody2D>().AddForce(Vector2.up * force);
但是当我在手机上玩游戏时,游戏会跟踪我是否继续按压/触摸屏幕,并根据它增加我向上移动的力。这让它变得非常困难,因为它非常敏感,我需要非常专注并快速点击,以避免它飞向天空(并撞向屋顶,这是我游戏中的另一个障碍)。
另外,如果你们中有谁能给我一些关于如何根据设备屏幕制作GUI的指导,我真的很感激,即使有几个教程,我似乎也弄不清楚,我觉得自己很愚蠢。
你可以使用一个布尔变量来确保每次触摸只施加一次力。
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()
,因为每次更新触摸事件都在变化。这样,在布尔变量的帮助下,力只在每次触摸事件的新开始时添加一次。
或者如果你想对每个新的触摸施加力,即使它们是并发的,你可以使用Input.touches
来获得所有的触摸。如果有任何触摸是TouchPhase.Began
,则表示它们刚刚开始。
如果你在代码中设置你的GUI大小,一种方法是使GUI缩放,你可以使用Screen.width / 8
代替200
。为了更好地缩放,甚至字体大小也可以用同样的方式设置。