Sprite kit SpriteKit节点定位

Sprite kit SpriteKit节点定位,sprite-kit,Sprite Kit,我正在构建一个游戏,我试图在射击敌人节点后用硬币节点替换敌人节点 在我给硬币添加一个物理实体之前,一切都很顺利,在这一点上,硬币被放置在主角所在的位置,而不是敌人所在的位置。但是,如果主角的x位置距离场景的左边缘或右边缘小于284像素,硬币将添加到场景中的x 284(如果在右侧,则为-284) 如果我注释掉这一行:self.physicsBody=[skphysicsbodywithrectangleofsize:CGSizeMake(self.size.width,self.size.heig

我正在构建一个游戏,我试图在射击敌人节点后用硬币节点替换敌人节点

在我给硬币添加一个物理实体之前,一切都很顺利,在这一点上,硬币被放置在主角所在的位置,而不是敌人所在的位置。但是,如果主角的x位置距离场景的左边缘或右边缘小于284像素,硬币将添加到场景中的x 284(如果在右侧,则为-284)

如果我注释掉这一行:
self.physicsBody=[skphysicsbodywithrectangleofsize:CGSizeMake(self.size.width,self.size.height)]
在Coin.m中,硬币被放置在它应该在的位置,但是角色不能与它交互

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

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

如果有人能指出我是否做错了什么,或者提供一个解决方案,我们将不胜感激。

在创建物理体之前尝试设置位置OK,因此如果我在MyScene中创建物理体并将其移出Coin.m init方法,我会在实例化物理体的行上出现运行时错误<代码>malloc:**对象0x1804dd90的错误:未分配要释放的指针***在malloc\u error\u break中设置断点以进行调试。。。。下面是代码行:
coin.physicsBody=[SKPhysicsBody-bodyWithRectangleOfSize:CGSizeMake(coin.size.width,coin.size.height)]。。。无论该行是在我设置位置的行之前还是之后,或是在我将其添加到场景的行之后。