Sprite kit SK物理体不与边缘物理体碰撞

Sprite kit SK物理体不与边缘物理体碰撞,sprite-kit,skphysicsbody,Sprite Kit,Skphysicsbody,我是一个新的精灵工具包,我正在尝试建立一个简单的游戏,其中一个掉落的物体停留在屏幕的范围内。但是,当我放下物体时,它不会像应该的那样与屏幕边缘发生碰撞,它只是掉了下来 我设置了我的场景和围绕它的边循环 // Create and configure the scene. SKScene * scene = [MyScene sceneWithSize:skView.bounds.size]; scene.scaleMode = SKSceneScaleModeAspectFill; scene.

我是一个新的精灵工具包,我正在尝试建立一个简单的游戏,其中一个掉落的物体停留在屏幕的范围内。但是,当我放下物体时,它不会像应该的那样与屏幕边缘发生碰撞,它只是掉了下来

我设置了我的场景和围绕它的边循环

// Create and configure the scene.
SKScene * scene = [MyScene sceneWithSize:skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
scene.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:scene.frame];
scene.physicsWorld.gravity = CGVectorMake(0.0, -9.8);
在这里,我画出了我的物理身体,让精灵落在我触摸的任何地方

for (UITouch *touch in touches) {
    CGPoint location = [touch locationInNode:self];

    SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"SObstacle.png"];

    sprite.position = location;

    CGFloat offsetX = sprite.frame.size.width * sprite.anchorPoint.x;
    CGFloat offsetY = sprite.frame.size.height * sprite.anchorPoint.y;

    CGMutablePathRef path = CGPathCreateMutable();

    CGPathMoveToPoint(path, NULL, 50 - offsetX, 58 - offsetY);
    CGPathAddLineToPoint(path, NULL, 0 - offsetX, 58 - offsetY);
    CGPathAddLineToPoint(path, NULL, 0 - offsetX, 32 - offsetY);
    CGPathAddLineToPoint(path, NULL, 24 - offsetX, 32 - offsetY);
    CGPathAddLineToPoint(path, NULL, 24 - offsetX, -2 - offsetY);
    CGPathAddLineToPoint(path, NULL, 80 - offsetX, -2 - offsetY);
    CGPathAddLineToPoint(path, NULL, 80 - offsetX, 24 - offsetY);
    CGPathAddLineToPoint(path, NULL, 50 - offsetX, 24 - offsetY);
    CGPathAddLineToPoint(path, NULL, 50 - offsetX, 56 - offsetY);

    CGPathCloseSubpath(path);

    sprite.physicsBody = [SKPhysicsBody bodyWithPolygonFromPath:path];

    [self addChild:sprite];

我用一个正方形的SKSpriteNode试过(我只使用坐标而不是图像),效果非常好。这可能只是新手犯的错误,但我们非常感谢您的帮助。

您的路径轮廓定义了一个多边形实体


您可以将路径更改为凸面,也可以将其拆分为多个通过关节连接的实体,以形成由单个凸面实体组成的更大的凹面形状。

Awesome!谢谢你澄清这一点。是否有任何类型的教程,你可以告诉我,这样我就可以理解创建一个更大的形状与个人的形状和关节?我假设我会使用BodyWithBodys?对,BodyWithBodys,但请记住这只适用于ios 7.1