繁体   English   中英

在Box2D对象上分配纹理

[英]Assigning textures on Box2D Object

我最近开始使用box2d,目前在绘制box2d时遇到问题。 现在,我的框只画有边界线。 但是我想在盒子存在的地方绘制纹理。

但是,我不确定是否正确的方法是将纹理分配给box2d,还是使用Sprite在盒子上绘制纹理。

有没有一种方法可以将纹理分配给box2d? 或使用box2d时渲染纹理的另一种方法?

例如,您必须找到实际的身体位置,在render方法中,您需要实现以下内容以找到身体位置并为其添加纹理。

ballPosition = ballBody.getPosition();

并将位置应用于屏幕上绘制的纹理

我使用的基本上有两种方法。

  1. 在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()); } } 
  2. 假设您有一个具有称为玩家的类的对象。 您可以在此类中实现一个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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM