6

我是 xcode 的精灵套件的新手,我正在尝试对SKSpriteNode's物理体施加冲动。这是我创建场景的方式:

self.backgroundColor = [SKColor colorWithRed:0 green:0 blue:0 alpha:1.0];
        self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
        self.physicsBody.friction = 0.0f;
        self.physicsWorld.gravity = CGVectorMake(0.0f, 0.0f);
        ballCategory = 1;
        wallCategory = 2;
        self.physicsBody.categoryBitMask = wallCategory;

以下是我创建播放器并赋予其冲动的方式:

player = [SKSpriteNode spriteNodeWithImageNamed:filePath];
    player.size = CGSizeMake(100, 100);
    player.position = CGPointMake(150, 250);
    player.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:player.frame];
    player.physicsBody.categoryBitMask = ballCategory;
    player.physicsBody.collisionBitMask = wallCategory;
    player.physicsBody.friction = 0.0f;
    player.physicsBody.restitution = 1.0f;
    player.physicsBody.linearDamping = 0.0f;
    player.physicsBody.allowsRotation = NO;
    [self addChild:player];
        CGVector impulse = CGVectorMake(100,100);
        [player.physicsBody applyImpulse:impulse];

因为我一直在完美地遵循iOS 开发人员库 Sprite Kit编程指南,所以有什么明显的遗漏吗?在此先感谢您的帮助!

4

1 回答 1

12

您正在将玩家的物理体创建为边缘体 - 这些始终是静态的(不能通过力/脉冲移动)。您应该将该行更改为:

player.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:player.frame.size];

这个例子使它成为一个基于矩形的动态体积,它会受到物理力的影响。你可以在这里阅读物理物体的类型。

于 2014-01-16T14:00:46.193 回答