我是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)发布于 2012-04-26 11:59:15
可以使用bezier曲线在2D空间中实现投射曲线效果。然后根据拉动距离设置第一个控制点和第二个控制点以及终点。
这是实现射弹曲线的最简单方法。
此外,要移动对象,您可以使用touchesMoved函数,并将对象的位置设置为与touchesMoved点的位置相同。
object.position = pulling.position;这将允许您在移动手指的同时移动对象。
https://stackoverflow.com/questions/4343016
复制相似问题