我正在制作一款游戏(准确地说是 Advance Wars 的克隆版),并且我正在尝试让 Unit 移动。
这是我目前正在使用的代码。
- (void)constructPathAndStartAnimationFromStep:(SKNode *)tile {
[movementPath removeAllObjects];
do {
if (tile.parentTile != nil) {
[movementPath insertObject:tile atIndex:0];
}
tile = tile.parentTile;
} while (tile != nil);
[self popStepAndAnimate];
}
- (void)popStepAndAnimate {
if ([movementPath count] == 0) {
selectedNode.isMoving = NO;
[self unMarkPossibleMovement];
return;
}
SKNode *s = [movementPath objectAtIndex:0];
SKAction *moveAction = [SKAction moveTo:s.position duration:0.4];
SKAction *moveCallback = [SKAction performSelector:@selector(popStepAndAnimate) onTarget:self];
[movementPath removeObjectAtIndex:0];
[selectedNode runAction:[SKAction sequence:@[moveAction, moveCallback]]];
}
问题是该单位甚至不移动。或者如果他们这样做,只有他们应该距离的一半左右。他们也没有在下一个被调用之前完成移动动作。
任何帮助将不胜感激!