[英]Assigning textures on Box2D Object
我最近开始使用box2d,目前在绘制box2d时遇到问题。 现在,我的框只画有边界线。 但是我想在盒子存在的地方绘制纹理。
但是,我不确定是否正确的方法是将纹理分配给box2d,还是使用Sprite在盒子上绘制纹理。
有没有一种方法可以将纹理分配给box2d? 或使用box2d时渲染纹理的另一种方法?
例如,您必须找到实际的身体位置,在render方法中,您需要实现以下内容以找到身体位置并为其添加纹理。
ballPosition = ballBody.getPosition();
并将位置应用于屏幕上绘制的纹理
我使用的基本上有两种方法。
在GameManager / GameWorld类中,实现一个被称为每一帧的update / tick方法。 调用world->Step(delta, 10, 10);
循环遍历世界上的所有身体并更新其Sprites位置。 请注意,创建主体时,许多主体将使用body.userData成员存储指向该主体“附加”的Sprite的指针。
for(b2Body *b = _world->GetBodyList(); b; b=b->GetNext()) { if (b->GetUserData() != NULL) { CCSprite *spriteData = (CCSprite *)b->GetUserData(); spriteData.position = ccp(b->GetPosition().x * PTM_RATIO,b->GetPosition().y * PTM_RATIO); spriteData.rotation = -1 * CC_RADIANS_TO_DEGREES(b->GetAngle()); } }
假设您有一个具有称为玩家的类的对象。 您可以在此类中实现一个tick / update方法,该方法使用主体的位置更新其自身的精灵...
[self setPosition:ccp(body->GetPosition().x * PTM_RATIO, body->GetPosition().y * PTM_RATIO)];
您需要有一个指向b2_body的指针,并将此实例添加到CCLayer中,在该CCLayer中实现了主要的update / tick / step。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.