Как переместить объект с помощью рогатки под разными углами? - PullRequest
0 голосов
/ 03 декабря 2010

Я новичок в разработке приложений для iPhone и Xcode, и я разрабатываю небольшую игру с использованием Box2D, которая имеет эффект рогатки. Мне нужна помощь с перемещением тела под соответствующими углами, когда используется выстрел слинга. Рогатка нарисована с помощью ccDrawLine и на нее помещено тело.

В моем проекте объект случайно движется в разных направлениях, когда используется выстрел слинга. Кто-нибудь знает как это исправить?

Мой код:

Нарисуй рогатку:

-(void)draw
{
    //NSLog(@"in dra");
    //glDisable(GL_TEXTURE_2D);
    //glDisableClientState(GL_COLOR_ARRAY);
    //glDisableClientState(GL_TEXTURE_COORD_ARRAY);

    _world->DrawDebugData();

    glEnable(GL_TEXTURE_2D);
    glEnableClientState(GL_COLOR_ARRAY);
    //glEnableClientState(GL_TEXTURE_COORD_ARRAY);

    glColor4f(0.6, 0.4, 0.2, 1.0);
    glLineWidth(4.0f);

    //glEnable(GL_LINE_SMOOTH);
    ccDrawLine( ccp(80, 75),ccp(pt1,pt2));
    ccDrawLine(ccp(pt1,pt2), ccp(240,75));
    ccDrawLine(ccp(80,75),ccp(80,0));
    ccDrawLine(ccp(240,75),ccp(240,0));    
}

Поместите объект на стропу:

-(void)addsprite2
{
    stone=[CCSprite spriteWithFile:@"rock.png"];
    stone.position=ccp(160,80);
    stone.tag=1;
    [self addChild:stone];
}

Я пытаюсь создать и добавить углы вручную.

Создание угла:

    if (stone.position.y < 80 && stone.position.y >= 70)
    {
        ft = abs(tp2)/PTM_RATIO;
    }
     else if(stone.position.y < 70 && stone.position.y >=60)
    {
        ft = (abs(tp2)+90)/PTM_RATIO;
    }

    else if(stone.position.y < 60 && stone.position.y >= 50)
    {
        ft = (abs(tp2)+110)/PTM_RATIO;
    }

    else if(stone.position.y < 50 && stone.position.y >= 40)
    {
        ft = (abs(tp2)+140)

1 Ответ

2 голосов
/ 26 апреля 2012

Вы можете использовать кривую Безье для реализации эффекта кривой снаряда в двумерном пространстве. Затем установите первую и вторую контрольные точки и конечную точку в зависимости от расстояния вытягивания.

Это самый простой способ реализации кривой снаряда.

Также для перемещения объекта вы можете использовать функцию touchesMoved и установить положение объекта таким же, как положение точки touchesMoved.

object.position = pulling.position;

Это позволит вам перемещать объект при перемещении пальца.

...