Автоматически перемещать спрайт, чтобы поймать другой спрайт

Я пытаюсь сделать игру, похожую на пинг-понг, используя box2d. Как сказано в игре, есть мяч и 2 весла. Один из лопастей перемещается игроком с помощью акселерометра. У меня это работает нормально. С другой стороны, я хочу, чтобы 2-е весло действовало как какая-то стена, которая бы ловила мяч и отбивала его обратно игроку.

Моя проблема в том, что мяч подпрыгивает с использованием силы тяжести и силы, поэтому я не уверен, как сказать 2-му веслу, чтобы он двигался туда, куда направляется мяч, чтобы поймать его. В настоящее время мой код выглядит так:

- (void)update:(ccTime) dt {
if(_isPaused == FALSE)
{
_world->Step(dt, 10, 10);
for(b2Body *b = _world->GetBodyList(); b; b=b->GetNext()) {
if (b->GetUserData() != NULL) {
CCSprite *sprite = (CCSprite *)b->GetUserData();
if(sprite.tag == 3)
{
[self schedule:@selector(moveObj:)interval:0.0];
b2Vec2 autoPos = b2Vec2(sprite.position.x/PTM_RATIO, sprite.position.y/PTM_RATIO);
float32 autoAngle = -1 * CC_DEGREES_TO_RADIANS(sprite.rotation);

b->SetTransform(autoPos, autoAngle);
}
}
}
std::vector<MyContact>::iterator pos;
for(pos = _contactListener->_contacts.begin(); pos != _contactListener->_contacts.end(); ++pos)
{
MyContact contact = *pos;

if((contact.fixtureA == _tPaddleFixture && contact.fixtureB == _ballFixture) || (contact.fixtureA == _ballFixture && contact.fixtureB == _tPaddleFixture))
{
_isHit = TRUE;
}
}
}}

-(void)moveObj:(ccTime)dt{
if(_isHit == TRUE)
{
//I need the code here
NSLog(@"HIT");
}
else
{
tPaddle.position = ccp(160, tPaddle.position.y);
}}

В настоящее время я просто печатаю сообщение, в котором говорится, что удар, если ракетка и мяч должны столкнуться (только в центре), но я не уверен, как сказать tPaddle двигаться туда, куда направляется мяч, чтобы поймать его. Может кто-нибудь, пожалуйста, дайте мне идею, как я могу это реализовать? Заранее спасибо.

0

Решение

Не можете просто попытаться сохранить весло x координаты и шарики x координата равна? Например, если мяч уходит влево, то же самое происходит и с веслом. Или я совсем не понял вопроса? Я представляю, как ваша игра выглядит так

******************
*  ***           *
*                *
*      *         *
*                *
*           ***  *
******************
2

Другие решения

Других решений пока нет …