Skip to main content
 首页 » 数据库

ios之如何阻止 Sprite 从特定表面反弹

2024年01月01日79oomusou

您好,我正在制作一款无休止的滚动游戏,其中角色基本上会在障碍物到来时避开障碍物,并且他可以跳过它们。我让一切都运行良好,但我看到角色纹理在撞到地面后会轻微反弹。我希望 Sprite 在着陆后立即停止。我尝试将 .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 

其中 playable rect 只是通用部署目的的屏幕边界。

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

请您参考如下方法:

同时将您的 Sprite 遇到的物理体的恢复设置为0。物理碰撞中的两个物理体都需要恢复为 0 才能导致没有弹性。