objective-c - SpriteKit 动态 Body 怎么可能穿过 StaticBody?

标签 objective-c sprite-kit skphysicsbody tunneling

您好,我的 SpriteKit 游戏出现了奇怪的效果。

我在屏幕周围有一堵墙, 我使用 bodyWithEdgeLoopF​​romRect 创建了 staticbody

通过执行 skView.showsPhysics = YES; 所有物体也会显示在屏幕上。

我在屏幕上有一个球。其中有 dynamic body。 有时当我提供 Force 让它穿过那堵静态墙时!!!

这怎么可能??

虽然我可以在屏幕上看到两个物体,但动态球有时会穿过静态墙。

我还为两个 物理体 赋予了 usesPreciseCollisionDetection = YES; 属性。 但这并不能阻止这个问题。

我怎样才能避免这个问题?

最佳答案

当物体的速度非常高时会发生这种情况。例如,如果您的球对象每帧都以 X + 300 的速度移动,那么它很可能不会检测到“墙”并越过它。

如果速度太高,将 usesPreciseCollisionDetection 设置为 YES 将无法解决此问题。

您应该对物体的速度应用速度限制。像这样:

if(self.physicsBody.velocity.dx > 100)
    self.physicsBody.velocity = CGVectorMake(100, self.physicsBody.velocity.dy);

以上将对象的右移动限制为 100,同时保持 dy(向上和向下)速度不变。

关于objective-c - SpriteKit 动态 Body 怎么可能穿过 StaticBody?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31613608/

相关文章:

objective-c - 使用 Objective-C 宏访问 Swift 中的 UIView 帧测量

iOS Spritekit 为什么我不能使用白色重复着色?

ios - SKAction 跟随路径同时进行定向和旋转

ios - 从音频的波形数据中检测说话人的性别

iphone - 如何将数据插入 iPhone 中的 SQLite 数据库

objective-c - 我们可以确定 iCloud 文件包中发生了什么变化吗?

ios - 对两个文本字段使用相同的 UIDatePicker

swift - Spritekit、Cocos2D/Chipmunk 物理引擎不确定,切换到 Box2d

swift - 快速测试节点是否附加到物理主体

swift - 具有不同旋转轴的 SKShapeNode 也具有 SKPhysicsBody swift