我正在制作游戏的gui API,其中一项要求提供的功能是震动事件。本质上是与Windows 7的Aero Shake非常相似的事件。当鼠标按下时,如果将鼠标单向快速地来回移动,则会触发该事件。我只是不确定哪种类型的psedocode会进入此代码?

最佳答案

我可能会考虑这样的事情:

  • 始终为鼠标最后移动的方向创建 vector
  • 当您收集下一个 vector 时,
  • 始终保留前一个 vector 的记录(这意味着您始终有两个 vector 要评估)。
  • 每次鼠标输入到达时,
  • 对两个 vector 进行点积运算。如果点积为正,则忽略它。如果它是负数,则用它设置一个时间值,并存储在一个数组中,最多可以存储其中五个时间戳。
  • 重复上述顺序。如果时间戳数组具有一组连续的时间戳,每个时间戳之间存在一些差异,那么您可以假定某人正在摇晃某物。 :)
  • 关于c++ - 实现一次摇动事件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4150019/

    10-10 03:32