我有这个代码可以让宇宙飞船上升,而不是让重力撞击地板。
if (Input.touchCount > 0)
GetComponent<Rigidbody2D>().AddForce(Vector2.up * force);
但是当我在手机上玩游戏时,游戏正在跟踪我是否持续按下/触摸屏幕,并增加我按照它上升的力量。这让它变得非常困难,因为它非常敏感,我需要真正专注并快速点击真正,不要让它 puf 向上飞行(并且对着屋顶是我游戏中的另一个障碍。)
另外,如果你们中的任何人能够根据设备屏幕给我一些关于如何制作GUI比例的指示,我真的很感激它,即使有几个,我似乎无法弄明白教程,我觉得很蠢。
答案 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
。为了更好地缩放,甚至可以以相同的方式设置字体大小。