Cocos2d -对象似乎正在重置其位置



我有一个在GameplayLayer上给定位置创建的敌人类。当我刷出敌人,然后返回它在日志中的当前位置时,它会返回它被创建时的位置(正确)。现在,我正尝试在Enemy类的更新方法中添加一些移动。然而,当我这样做时,它会将敌人"传送"到位置0,0,然后对其应用移动。当我从敌人的更新方法中返回敌人的位置时,它会报告0,0,而不是生成它的位置。

现在,我使用动画来表示屏幕上的敌人。我是否可以像使用精灵一样访问动画的位置,或者我是否完全遗漏了某些内容?

在游戏层生成敌人:

CCLOG(@"Creating Enemy");
Enemy *enemy = [[Enemy alloc] initWithSpriteFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"node-red-1.png"]];
[enemy setPosition:spawnLocation];
[sceneSpriteBatchNode addChild:enemy z:ZValue tag:kEnemySpriteTagValue];
[enemies addObject:enemy];

敌人移动动作:

CCLOG(@"Enemy->Starting the Traveling Animation");
action = [CCRepeatForever actionWithAction: [CCAnimate actionWithAnimation:skullRedAnim restoreOriginalFrame:NO]];
self.moveAction = [CCMoveBy actionWithDuration:(screenSize.height/200) position:ccp(self.position.x, screenSize.height + 100)];
[self runAction:moveAction];
break;

问题最终出在我的init方法上,特别是我做一些事情的顺序。

最新更新