Хорошо, поехали.У меня есть приложение cocos2d, и есть цели, которые двигаются к игроку.Когда игрок движется, я бы хотел, чтобы он снова медленно изменил свое направление к игроку, чтобы они не просто двигались в пустое пространство.Можно ли изменить назначение действия спрайта mid-run?
edit:
Это код в - (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 от предыдущего смещения, чем ближе цель подходит к игроку, тем медленнее она движется.Как я могу сделать его скорость постоянной?