我正在建造一个游戏,我正在尝试用射击他的硬币节点替换敌人节点。
一切正常,直到我向硬币添加物理体,此时硬币定位在主角所在的位置而不是敌人所在的位置。但是,如果主角的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
如果有人能够指出我做错了什么,或提供解决方法,我们将不胜感激。