gpt4 book ai didi

ios - Cocos2d 更改 Sprite 目的地

转载 作者:行者123 更新时间:2023-11-29 04:55:57 26 4
gpt4 key购买 nike

好的,我们开始吧。我有一个 cocos2d 应用程序,并且有一些目标朝玩家移动。当玩家移动时,我希望他们再次慢慢地将目的地更改为玩家,这样他们就不会只是移动到空旷的空间中。是否可以更改 Sprite mid-runAction 的目的地?

编辑:

这是 - (void)changeTargetDest 中的代码

- (void)changeTargetDest {
NSMutableArray* deleteArray = [[NSMutableArray alloc] init];
for(CCSprite* s in _targets) {
float offX = s.position.x - player.position.x;
float offY = s.position.y - player.position.y;
float adjustX;
float adjustY;
float offDistance = sqrt(powf(offX, 2.0f) + powf(offY, 2.0f));

if(offDistance < 15) {
[deleteArray addObject:s];

deaths++;
[deathLabel setString:[NSString stringWithFormat:@"Deaths: %ld", deaths]];
if(deaths == 0)
[kdLabel setString:[NSString stringWithFormat:@"K/D ratio: %ld.00", score]];
else
[kdLabel setString:[NSString stringWithFormat:@"K/D ratio: %.2f", ((float)score / (float)deaths)]];
}

else {
adjustX = offX * .99;
adjustY = offY * .99;

CGPoint point = CGPointMake(player.position.x + adjustX, player.position.y + adjustY);

[s setPosition:point];
}//else

}//for

for (CCSprite *target in deleteArray) {

[_targets removeObject:target];
[self removeChild:target cleanup:YES];
}
}

除了一个问题之外,这个方法运行良好。因为新位置是通过前一个偏移量的 0.99 计算得出的,所以目标距离玩家越近,移动速度就越慢。如何使其速度恒定?

最佳答案

您可以按预定方法停止操作并每隔几帧运行一个新操作。但更好的方法是根据玩家位置计算目标位置,并使用 setPosition 在更新方法中的每一帧手动更改其位置。

关于ios - Cocos2d 更改 Sprite 目的地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7974561/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com