Как определить, когда CCSprite достиг определенной точки? - PullRequest
0 голосов
/ 26 августа 2011

Я пишу игру, используя библиотеку Cocos2d для iOS.Пока у меня есть спрайт на экране, который я хотел бы перетащить.В основном у меня есть CGPoint под названием End.Когда я перетаскиваю экран, он движется.Я хочу, чтобы спрайт фигурировал в каждом кадре независимо от того, сдвинулся ли Конец и начал ли он двигаться к нему с заданной скоростью, и остановился прямо над ним.Конец как якорь.Первые два шага я выполнил, построив вектор таким образом:

-(void) update:(ccTime)deltaTime
{
    CGPoint Pos = _player.position;
    velocity = 15;

    diff.x = End.x - _player.position.x;
    diff.y = End.y - _player.position.y;
    length = ccpLength(diff);

    norm.x = diff.x / length * velocity;
    norm.y = diff.y / length * velocity;

    Pos.x += norm.x;
    Pos.y += norm.y;
}

Я перемещаю конечную точку следующим образом:

- (void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event 
{
CGPoint touchLocation = [self convertTouchToNodeSpace:touch];

CGPoint oldTouchLocation = [touch previousLocationInView:touch.view];
oldTouchLocation = [[CCDirector sharedDirector sharedDirector] convertToGL:oldTouchLocation];
oldTouchLocation = [self convertToNodespace:oldTouchLocation];

CGPoint diff = ccpSub(touchLocation, oldTouchLocation);

End = ccpAdd(End, diff);
}

Какой лучший способ определить, когда_player достиг своей цели?Я пробовал это несколькими способами, но я действительно не могу получить это, чтобы быть достаточно точным.Я попытался добавить таймер, который умножает продолжительность каждого хода, чтобы я мог проверить, если скорость * длительность> = длина .Это способ сделать это?Это не сработало слишком хорошо.Любые мастера-программисты хотят дать мне несколько советов?

1 Ответ

1 голос
/ 01 сентября 2011

В конце вашего метода обновления проверьте расстояние.Если расстояние меньше скорости, все готово, установите положение в конечную точку и запустите любой метод, который вам нравится.В cocos2d вы можете использовать метод ccpDistance.

...