无法对SKSpriteNode物理体施加冲动

Luc*_*len 6 sprite-kit skphysicsbody

我是xcode的sprite kit的新手,我试图将一个冲动应用于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;
Run Code Online (Sandbox Code Playgroud)

以下是我如何制作播放器并给予它的冲动:

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];
Run Code Online (Sandbox Code Playgroud)

是否有任何明显的遗漏,因为我一直在完全关注iOS Developer Library Sprite Kit编程指南?在此先感谢您的帮助!

Bat*_*lia 12

你正在创造玩家的物理身体作为边缘身体 - 这些总是静态的(由力/冲动不可移动).您应该将该行更改为:

player.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:player.frame.size];
Run Code Online (Sandbox Code Playgroud)

此示例使其成为基于矩形的动态体积,该矩形将受到物理力的影响.您可以在这里阅读物理机构的类型.