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