我正在为我所做的一个非常简单的乒乓球测试开发菜单系统,并且在拇指杆上遇到了一些问题。我见过的几个示例显示了在菜单屏幕上向上和向下移动选项的代码:
if (controller.Thumbsticks.Left.Y > 0.5f) MenuUp();
虽然这在理论上可行,但该测试在每一帧(Update()
表面上是在调用中)运行,每秒检查控制器状态大约 60 次。由于普通用户至少会举起拇指摇杆大约四分之一秒,结果是在控制器摇杆上轻按几乎会立即在整个菜单中循环。
我可能会实现某种复杂的计时器系统,它会检查自上次菜单项更改以来的时间以及拇指杆已举起多长时间,但我发现网络上的示例都没有使用如此复杂的计时系统。我错过了什么吗?
编辑:安德鲁在下面的评论中询问我找到的这些教程的链接:
- 这个使用
if (controller.isButtonPressed(Buttons.LeftThumbstickUp))
但它是相同的想法。
http://create.msdn.com/en-US/education/catalog/sample/game_state_management - 我意识到这是 XNA 2.0(我正在使用 4.0),但原则仍然是
http://www.sgtconker.com/2010/08/nick-gravelyns-alien-aggressors-tutorial/ - 此外,Chad Carter 的“Microsoft XNA Game Studio 3.0 Unleashed”一书第 530 页显示了类似的代码。他的系统会检查之前的游戏手柄状态,因此他的系统不会立即滚动浏览多个选项,但它也根本不允许您滚动- 每次您想要向上移动菜单选项时,都必须将拇指摇杆向后移动居中并再次向上推。我正在寻找更像是当您按住键盘上的一个键时的行为:出现一个字母,稍有延迟,然后开始以有节奏的速度重复该字母。