0

我是 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)
4

1 回答 1

2

您可以使用贝塞尔曲线在 2D 空间中实现抛射曲线效果。然后根据拉距设置第一个和第二个控制点和结束点。

这是实现弹丸曲线的最简单方法。

同样要移动对象,您可以使用 touchesMoved 函数并将对象的位置设置为与 touchesMoved 点的位置相同。

object.position = pulling.position;

这将允许您在移动手指时移动对象。

于 2012-04-26T03:59:14.950 回答