我正在开发一款带有快速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
答案 0 :(得分:3)
这个问题似乎只是物理引擎的一个小缺陷(嘿,它是一个模拟,并不完全准确,我以前遇到过这种事情)。我看到你阻止了玩家的旋转,所以你可以将方形player
的物理体改成一个圆圈。这应该是这样的:
player.physicsBody = SKPhysicsBody(circleOfRadius: 10)
将10替换为player
的正确半径。这样可以消除你遇到的颠簸。
答案 1 :(得分:0)
你是如何滑动的?
我遇到了同样的问题,我能够解决它使用SKAction滑动我的英雄来运行一个改变英雄速度的代码块,或者只是简单地运行SKAction.moveBy。你的SKAction不应该试图将你的挡块推向地面。仅在x方向上移动块的操作。
您还可以通过确保地块的物理实体不重叠来平滑曲面。引入1-2分的差距。或者可以使用单个physicsBody组合图块。这也可能有所帮助。