所以我正在使用Spritekit
/ Swift
中的“Ray Wenderlich's amazing tutorial”制作一个破砖风格游戏,就像教程一样。
我使用SKSpriteNode()
和SKPhysicsBody()
成功地让球在屏幕上反弹,我一直在调整用于开始球在屏幕周围永久弹跳的impulses
的值。
然而,我偶然发现了一个我希望找到解决方案的问题。
有时候,在我的游戏中,Sprite
会反弹并变成“墙锁定”在两面墙之间几乎垂直(或直线)反弹,(给出或取几个像素) !因此,在两个所述墙之间的整个屏幕上,Zig-Zagging会持续很长时间。
我想要做的是,如果发生这种情况并且球被“Wall Locked”引入一种新的冲动让它再次移动......
如何做到这一点?例如,如果它在顶壁和底壁之间反弹10次,那么是时候调整它的角度/引入一个新的冲动。
最后10个位置是否可以存储在数组中,然后测试它们是否几乎垂直?
答案 0 :(得分:0)
如果你检查Sprite的 velocity 属性,你可以检测到它的任何一个值接近于零,然后使它们不是那么接近于零。这样可以阻止它在水平或垂直方向上移动。