断言屏幕太多时断言失败

时间:2017-05-17 14:44:31

标签: lua corona

我正在开发一种将子弹投向龙头方向的游戏。但是当我在播放器的中心点击太多/多次时,我收到以下错误:

Runtime error
    assertion failed!
    stack traceback:
        [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

距离和变化都是南。

2 个答案:

答案 0 :(得分:1)

如何调试这样的问题:

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

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

可能没有正确设置/初始化某些内容。它还会显示您是否以及何时尝试在nil对象上调用转换。

更新:

因此,进一步的调查表明,在某些时候,您正试图通过NaN(来自手册:“(非数字是一个特殊值,用于表示未定义或不可表示的数值结果,例如0/0)。 )“)作为transition.to的参数,它反对这一点。您应该在计算distancefarY时查看您的假设。你可以将零除以或在某处取负数的平方根吗?

答案 1 :(得分:0)

我怀疑当你拍得很快时,你会在某个时刻不小心碰到你计算距离的位置。距离算法中的某些东西导致其数学失败,并且它会吐出NaN(这基本上是零除或占位符,用于其他数学问题)。

检查距离计算中的NaN并将其替换为0.更好的是,改进计算。您可以使用我编写的库 - 查找lengthOf函数:

https://gist.github.com/HoraceBury/9431861