0
좋아, 여기에 우리가 간다. 나는 cocos2d 앱을 가지고 있으며 플레이어쪽으로 이동하는 타겟이 있습니다. 플레이어가 움직이면 플레이어에게 천천히 목적지를 다시 변경하여 빈 공간으로 이동하는 것이 아닙니다. 스프라이트 중간 동작의 대상을 변경할 수 있습니까?코코스 2D 스프라이트 대상 변경
편집 :
이의 코드입니다 - (무효)가이 하나의 문제를 제외하고 잘 작동
- (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];
}
}
changeTargetDest. 새로운 위치는 이전 오프셋의 99를 취함으로써 계산되기 때문에 대상이 플레이어에 가까울수록 이동 속도가 느려집니다. 속도를 일정하게 유지하려면 어떻게해야합니까?
정확합니다. 동작은 1 프레임 지연됩니다. 매 프레임마다 새로운 이동 액션을 생성하는 상황에 도달하면 스프라이트가 고정되어 움직이지 않습니다. – LearnCocos2D
제 편집을 참조하십시오. 이 코드를 사용하면 스프라이트는 사용자가 말한 것과 정확히 일치합니다. 전혀 움직이지 않습니다. –
코드에서 각 프레임은 동작을 실행하고 다른 동작을 중지합니다. 이렇게하면 스프라이트는 움직이지 않습니다. 동작은 한 프레임에 적합하지 않습니다. 움직입니다. 스프라이트를 각 프레임으로 이동하려면 설정 위치로 수동으로 위치를 설정해야합니다. , 각 프레임. –