objective-c - cocos2d 在不同目标上按顺序运行序列

标签 objective-c cocos2d-iphone

所以,我有一个基本的游戏场景:

某些单位靠近敌方单位,发射弹丸,然后调整敌方单位的生命。我的问题是我不确定如何安排这三个事件依次运行。如果所有这些操作都是在同一个目标上完成的,那么这将非常容易,但是有两个不同的目标。

执行此操作的最佳方法是什么?

代码如下所示:

Unit* unit = [self getActiveUnit];
Unit* enemy = [self getEnemyInRange:unit];

CGpoint A = unit.sprite.position;
CGPoint B = [self getPositionClose:enemy for:unit];

CCSequence* unitMove = [self generateUnitMoveFrom:A to:B];

Projectile* proj = [self generateProjectile];
CCSequence* projMove = [self generateProjMoveFrom:A to:B];

CCSequence* attackDone = [self generateAttackDoneFor:unit enemy:enemy];

// This is the part that i don't know how to do
// Execute these in order and sequentially, not at the same time
[unit.sprite runAction:unitMove];
[proj.sprite runAction:projMove];
[proj.sprite runAction:removeSprite];
[self runAction:attackDone];

执行此操作的最佳方法是什么?即使使用 CCActionManager,它看起来仍然相当复杂,因为我认为我必须在所有这些操作之间添加额外的回调,以恢复下一个目标的计划操作。

有什么想法吗?

谢谢!

最佳答案

我会尝试使用CCSequence

[self runAction:[CCSequence actions:
  [CCCallFuncO actionWithTarget:unit.sprite selector:@selector(runAction:) object:unitMove],
  [CCCallFuncO actionWithTarget:proj.sprite selector:@selector(runAction:) object:projMove],
  [CCCallFuncO actionWithTarget:proj.sprite selector:@selector(runAction:) object:removeSprite],
  [CCCallFunc actionWithTarget:self selector:@selector(attackDone)],
                     nil]];

关于objective-c - cocos2d 在不同目标上按顺序运行序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11035114/

相关文章:

iphone - 如何将黑色变为白色

ios - 如何确保在模拟器中设置了 NSURLIsExcludedFromBackupKey ist

ios - 部分 segue 以显示设置 View

ios - NSNotificationCenter 在应用程序购买期间发送释放的消息

ios - Cocos2d - 奇怪的 CCMenu 和 CCMenuItem 行为 - 不正确的 HitTest 层顺序

ios - 新闻API可以在应用程序中使用吗?

iOS 自动点击并转到某个 View Controller

objective-c - Cocos2d :how to implement zooming by pinch

iphone - 在 cocos2d 上使 iOS 应用程序小于 50MB

ios - 如何从 UIGestureRecognizer 获取 UITouch 位置