【发布时间】:2011-08-02 13:17:55
【问题描述】:
我正在添加这样的敌人:
-(void)addEnemy {
if ([spawnedEnemies count] < 25) {
CCSprite* sprite = [CCSprite spriteWithFile:@"white.png"];
float randomX = arc4random() % 480;
float randomY = arc4random() % 320;
sprite.position = ccp(randomX,randomY);
[spawnedEnemies addObject:sprite];
[self addChild:sprite];
[sprite runAction:[CCMoveTo actionWithDuration:5 position:player.position]];
} }
但是如果我的玩家移动精灵仍然会移动到最后一个玩家位置... 因为我在我的tick中试过这个:
-(void)tick:(ccTime)delta {
for (CCSprite *sp in spawnedEnemies) { [sp stopAllActions]; [sp runAction:[CCMoveTo actionWithDuration:5位置:玩家.位置]]; } }
但是只有当我停止移动时敌人才会移动(只是移动真的很慢,因为每次我移动它都会调用 [sp stopAllActions]
我现在该怎么办?
编辑:*编辑:*编辑:*编辑:*编辑:*编辑:*编辑:*编辑:*编辑: 现在我正在这样做,即使玩家正在移动,敌人也会向玩家移动 但是有一个问题:敌人(离玩家)越近他们移动的越慢...... 如何解决?
//function to apply a velocity to a position with delta
static CGPoint applyVelocity(CGPoint velocity, CGPoint position, float delta){
return CGPointMake(position.x + velocity.x * delta, position.y + velocity.y * delta);
}
-(void)tick:(ccTime)delta {
for (CCSprite *sp in spawnedEnemies) {
CGPoint m = ccpSub(player.position, sp.position);
sp.position = applyVelocity(m, sp.position, 1.0/60.0f);
}
}
【问题讨论】:
标签: iphone cocos2d-iphone position move