gpt4 book ai didi

c# - 用于 Rolling Sky x 轴控制的统一触摸输入

转载 作者:行者123 更新时间:2023-11-30 21:41:36 27 4
gpt4 key购买 nike

我已经编写了一些代码,我认为这些代码是 Rolling Sky 等游戏的玩家 Controller 中的一些非常简单的版本。

void Update () {
if (Input.GetMouseButton(0)) {
NewX = Camera.main.ScreenToViewportPoint (Input.mousePosition).x;
float xMotion = (LastX - NewX) * -NavigationMultiplier / Screen.width;
this.transform.position = new Vector3 (this.transform.position.x + xMotion, this.transform.position.y, this.transform.position.z);
}
LastX = Camera.main.ScreenToViewportPoint(Input.mousePosition).x;
}

此代码在桌面上运行良好,但正如预期的那样,它在移动设备(所选平台)上的表现不佳有趣的是,它看起来就像玩家跟随手指一样简单地使用:

this.transform.position = new Vector3 (Input.mousePosition.x, this.transform.position.y, this.transform.position.z);

任何人都可以帮助使第一个代码块在移动设备上正常工作吗?

桌面行为(期望) https://www.youtube.com/watch?v=PjSzEresQI8

移动行为(不受欢迎的) https://www.youtube.com/watch?v=OooJ_NJW7V0

提前致谢

最佳答案

出于某种原因,Input.GetMouseButton 在 Android 上始终为真(不确定其他平台),因此为了强制仅当用户在屏幕上“按下”时才发生重新定位,我使用了以下代码:

if (Input.GetTouch(0).phase == TouchPhase.Moved){
NewX = Camera.main.ScreenToViewportPoint (Input.mousePosition).x;
float xMotion = (LastX - NewX) * -NavigationMultiplier / Screen.width;
this.transform.position = new Vector3 (this.transform.position.x + xMotion, this.transform.position.y, this.transform.position.z);
}
LastX = Camera.main.ScreenToViewportPoint(Input.mousePosition).x;

关于c# - 用于 Rolling Sky x 轴控制的统一触摸输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43169474/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com