• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 相邻的 SKPhysicsBody 无法正常工作

[复制链接]
菜鸟教程小白 发表于 2022-12-12 18:47:41 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我在尝试将两个具有物理实体的 block 彼此叠放时遇到问题。

http://s1173.photobucket.com/user/Kyle_Decot/media/example_zps02f027fe.mp4.html

正如您在视频中看到的那样,我可以将我的积木放在堆叠的积木上,即使它们是相互叠放的。

玩家方 block 和其他方 block 都继承自一个基本的 Block 类,看起来像这样

#import "Block.h"

@implementation Block

+ (void)loadSharedAssets {

}

- (id)initWithColorUIColor *)color sizeCGSize)size {

    self = [super initWithColor:color size:size];

    if (self) {

        self.texture = [SKTexture textureWithImageNamed"tile"];

        self.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize: self.size];
        self.physicsBody.usesPreciseCollisionDetection = YES;
        self.physicsBody.dynamic = NO;


    }

    return self;
}

@end

更新

我添加了一张图片以使问题更加清晰。本质上的问题是,即使蓝色 block 彼此正上方,我仍然能够跳起来(带红色 block )并坐在底部蓝色 block 的边缘(这应该是不可能的)。似乎有些东西与物理物体或其他东西有关。

enter image description here

您可以看到,由于某种原因,红色 block 高于相邻的蓝色 block ,并且“坐在”底部蓝色 block 的边缘。当我跳起来反对它时。



Best Answer-推荐答案


编辑:用答案替换原来的建议

滚动到box2d documentation4.5 边缘形状部分你会找到原因(SpriteKit 在其物理实现中使用 Box2D)

In many cases a game environment is constructed by connect several edge shapes end-to-end. This can give rise to an unexpected artifact when a polygon slides along the chain of edges. In the figure below we see a box colliding with an internal vertex. These ghost collisions are caused when the polygon collides with an internal vertex generating an internal collision normal.

这里的两条边(edge1 和 edge2)是游戏中两个蓝色框的左侧边(所以想象一下它逆时针旋转了 90 次)

Box2D 引入了 ChainShapes 来解决这个问题(您可以在 5.6 Edge Shapes 部分找到引用。

这个想法是在同时生成多个盒子时用这些顶点链替换成组的方形物理体。

我相信您可以使用 bodyWithEdgeChainFromPath 在 SpriteKit 中访问这些内容。并传入一个核心图形路径,该路径由要组合的框的角点组成,以形成碰撞链

关于ios - 相邻的 SKPhysicsBody 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21734959/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap