精灵套件 - 将身体滑过其他物体

时间:2015-10-07 23:54:55

标签: ios swift sprite-kit skphysicsbody

我正在开发一款带有快速Sprite套件的游戏。但是我遇到了一个问题,正如你在图片中看到的那样,我有许多具有相同大小的物理块对齐。当我将这个区块滑到其他区域之上时,有时候他会卡住或做一些小跳跃。 似乎物理身体有时会重叠。 任何人都知道如何解决这个问题,以便持续不进行精确运动?

一些物理特征:

player.physicsBody?.friction       = 0.0
player.physicsBody?.restitution    = 0.00
player.physicsBody?.linearDamping  = 0.1
player.physicsBody?.angularDamping = 0.0
player.physicsBody?.allowsRotation = false
player.physicsBody?.velocity.dx = 0
player.physicsBody?.velocity.dy = 0
player.physicsBody?.categoryBitMask    = heroCategory
player.physicsBody?.contactTestBitMask = enemyCategory
player.physicsBody?.density = 2.3

enter image description here

2 个答案:

答案 0 :(得分:3)

这个问题似乎只是物理引擎的一个小缺陷(嘿,它是一个模拟,并不完全准确,我以前遇到过这种事情)。我看到你阻止了玩家的旋转,所以你可以将方形player的物理体改成一个圆圈。这应该是这样的:

player.physicsBody = SKPhysicsBody(circleOfRadius: 10)

将10替换为player的正确半径。这样可以消除你遇到的颠簸。

答案 1 :(得分:0)

你是如何滑动的?

我遇到了同样的问题,我能够解决它使用SKAction滑动我的英雄来运行一个改变英雄速度的代码块,或者只是简单地运行SKAction.moveBy。你的SKAction不应该试图将你的挡块推向地面。仅在x方向上移动块的操作。

您还可以通过确保地块的物理实体不重叠来平滑曲面。引入1-2分的差距。或者可以使用单个physicsBody组合图块。这也可能有所帮助。