SpriteKit定位节点

时间:2014-02-01 02:38:32

标签: sprite-kit

我正在建造一个游戏,我正在尝试用射击他的硬币节点替换敌人节点。

一切正常,直到我向硬币添加物理体,此时硬币定位在主角所在的位置而不是敌人所在的位置。但是,如果主角的x位置距离场景的左边缘或右边缘小于284像素,则硬币将被添加到场景x 284(如果在右边,则为-284)。

如果我在Coin.m中注释掉这一行:self.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(self.size.width, self.size.height)];,那么硬币就位于它应该的位置,但是角色不能与之交互。

这是代码的片段。我使用基本相同的技术将激光添加到场景中,但没有问题。

MyScene.m内部:

- (void)didBeginContact:(SKPhysicsContact *)contact
{
    ...
    Coin *coin = [[Coin alloc] initWithImageNamed:@"coin"];
    coin.xScale = 0;
    coin.yScale = 0;
    [_charactersLayer addChild:coin];
    coin.position = enemyPosition;
    [coin runAction:[SKAction sequence:@[[SKAction waitForDuration:.4], [SKAction scaleTo:1.0 duration:0.5]]]];

在硬币类中:

@implementation Coin

- (instancetype)initWithImageNamed:(NSString *)name
{
    if (self = [super initWithImageNamed:name]) {
        self.name = @"coin";
        self.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(self.size.width, self.size.height)];
        self.physicsBody.dynamic = NO;
        self.physicsBody.categoryBitMask = PCToolCategory;
    }
    return self;
}

@end

如果有人能够指出我做错了什么,或提供解决方法,我们将不胜感激。

0 个答案:

没有答案