如何只获得“跳转”的初始触摸;命令在Unity中创建Android游戏

本文关键字:命令 触摸 Unity 游戏 Android 创建 跳转 | 更新日期: 2023-09-27 17:50:35

我用这段代码来让飞船上升,而不是让重力把它压在地板上。

if (Input.touchCount > 0)
        GetComponent<Rigidbody2D>().AddForce(Vector2.up * force);

但是当我在手机上玩游戏时,游戏会跟踪我是否继续按压/触摸屏幕,并根据它增加我向上移动的力。这让它变得非常困难,因为它非常敏感,我需要非常专注并快速点击,以避免它飞向天空(并撞向屋顶,这是我游戏中的另一个障碍)。

另外,如果你们中有谁能给我一些关于如何根据设备屏幕制作GUI的指导,我真的很感激,即使有几个教程,我似乎也弄不清楚,我觉得自己很愚蠢。

如何只获得“跳转”的初始触摸;命令在Unity中创建Android游戏

你可以使用一个布尔变量来确保每次触摸只施加一次力。

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。为了更好地缩放,甚至字体大小也可以用同样的方式设置。