如何只获得"跳跃的初步触摸" Unity中的Android游戏命令

时间:2015-05-24 03:40:59

标签: c# android mobile unity3d

我有这个代码可以让宇宙飞船上升,而不是让重力撞击地板。

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

但是当我在手机上玩游戏时,游戏正在跟踪我是否持续按下/触摸屏幕,并增加我按照它上升的力量。这让它变得非常困难,因为它非常敏感,我需要真正专注并快速点击真正,不要让它 puf 向上飞行(并且对着屋顶是我游戏中的另一个障碍。)

另外,如果你们中的任何人能够根据设备屏幕给我一些关于如何制作GUI比例的指示,我真的很感激它,即使有几个,我似乎无法弄明白教程,我觉得很蠢。

1 个答案:

答案 0 :(得分:1)

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

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(),因为每次更新时触摸事件都会发生变化。这样,在布尔变量的帮助下,每次触摸事件的新开始时,force只会添加一次。

或者如果您想在每次新触摸时施加力,即使它们是并发的,您也可以使用Input.touches来获取所有触摸。如果任何触摸为TouchPhase.Began,则表示它们刚刚开始。

如果您在代码中设置GUI大小,那么进行GUI缩放的一种方法是您可以使用Screen.width / 8而不是200。为了更好地缩放,甚至可以以相同的方式设置字体大小。