我正在开发菜单系统,用于进行非常简单的乒乓测试,并且用拇指杆遇到了一些问题。我看到的几个例子显示了在菜单屏幕上上下移动选项的代码:
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 答案 0 :(得分:1)
您已经连接了几个成功的教程来演示这种技术。这究竟是什么问题?基本前提是,如果您只是检查/移动每一帧,结果对于用户来说是不可理解的。
最简单的选择是保持控制器的“先前状态”。如果在最后一帧中已按下“向下”,则禁止移动菜单选项。这使得一个用户操作仅用于处理一次。