点击屏幕过多时出现断言失败错误

我正在开发一个游戏,可以向点击的方向投掷子弹。但是当我在玩家中心多次/过多地点击屏幕时,会出现以下错误:

运行时错误
    断言失败!
    堆栈回溯:
        [C]: in function 'assert'
        ?: in function '?'
        ?: in function '_initTween'
        ?: in function 'to'
        /Users/User/Desktop/MD/screen1.lua:61: in function </Users/User/Desktop/MD/screen1.lua:31>
        ?: in function <?:221>

但是当我点击得慢一些时,就不会出现错误。这是screen1.lua的第61行:

bullet.trans = transition.to(bullet, { time=distance/bulletSpeed, y=farY, x=farX, onComplete=nil})

感谢所有的帮助!

编辑: 添加这行代码后:

print("Values for transition: ", bullet, distance, bulletSpeed, farY, farX)

这是结果: enter image description here

距离和fary都是NaN。

点赞
用户3455883
用户3455883

如何调试这样的问题:

作为解决该问题的第一个步骤,我建议您在调用 transition.to() 之前打印涉及变量的值:

print("Values for transition: ", bullet, distance, bulletSpeed, farY, farX)

可能存在某些未正确设置/初始化的东西。这也将显示您何时尝试在 nil 对象上调用过渡。

更新:

进一步调查表明,您尝试将 NaN(来自手册:“(非数字是用于表示未定义或无法表示的数值结果,例如 0/0。)”)作为 transition.to 的参数,并且它要求您检查计算 distancefarY 时的假设。您是否在某个地方除以零或取负数的平方根?

2017-05-17 18:25:15
用户71376
用户71376

我怀疑当你快速输入时,你可能会意外地击中你正在计算距离的位置。你的距离算法中的某些内容导致它的数学运算失败并输出 NaN(基本上是除以零或其他数学问题的占位符)。

检查距离计算中的 NaN 并将其替换为 0。更好的方法是改进计算。你可以使用我写的库 - 查找 lengthOf 函数:https://gist.github.com/HoraceBury/9431861

2017-05-22 08:12:37