如何阻止精灵从特定表面反弹

时间:2015-03-16 20:21:01

标签: ios swift sprite-kit

嗨我正在制作一个无休止的滚动游戏,角色基本上避开障碍物,因为它们来了,他可以跳过它们。我把一切都运行得很好但是我看到角色纹理在撞到地面后会稍微弹跳。我希望精灵在触及后立即停止。我尝试将.restitution属性设置为0,但我仍然看到它弹跳。这是我的火柴人角色和有问题的边缘物理类别的设置代码

stickman.physicsBody?.dynamic = true
    stickman.physicsBody?.allowsRotation = false
    stickman.physicsBody?.usesPreciseCollisionDetection = true
    stickman.physicsBody?.categoryBitMask = PhysicsCategory.Stickman
    stickman.physicsBody?.collisionBitMask = PhysicsCategory.Edge
    stickman.physicsBody?.contactTestBitMask = PhysicsCategory.Obstacle | PhysicsCategory.Edge
    stickman.physicsBody?.restitution = 0


self.physicsWorld.gravity = CGVector(dx: 0, dy: -9.8)
    physicsBody = SKPhysicsBody(edgeLoopFromRect: playableRect)
    physicsWorld.contactDelegate = self
    physicsBody?.categoryBitMask = PhysicsCategory.Edge

可播放矩形只是用于通用部署目的的屏幕边界。

有没有人遇到过这个问题。我在其他帖子中找不到同样的问题。

1 个答案:

答案 0 :(得分:3)

将精灵所运行的物理体的restitution设置为0。物理碰撞中的两个物理实体都需要恢复原状才能导致没有弹性。