我正在将Box2D多边形添加到我的世界中,我无法弄清楚如何仅将纹理添加到多边形形状。多边形是一个三角形,并使用CGRectMake()作为rect:参数,而初始化我的精灵给了一个大于我的多边形的精灵。
这是我在场景中添加多边形(弹簧)的方法
-(void) addSpring:(zSpring*)spring
{
[self addChild:spring.sprite];
CGPoint p = spring.coords;
//static triangle one
b2Vec2 vertices[3];
int32 count = 3;
vertices[0].Set(0.0f,0.0f);
vertices[1].Set(2.0f,0.0f);
vertices[2].Set(0.0f,1.0f);
b2BodyDef springBodyDef;
springBodyDef.type = b2_staticBody;
springBodyDef.position.Set(p.x/PTM_RATIO ,p.y/PTM_RATIO);
springBodyDef.userData = spring.sprite;
b2Body *body = world->CreateBody(&springBodyDef);
b2PolygonShape polygon;
polygon.Set(vertices, count);
b2FixtureDef springShapeDef;
springShapeDef.shape = &polygon;
springShapeDef.density = 1.0f;
springShapeDef.friction = 0.2f;
springShapeDef.restitution = 1.6f;
body->CreateFixture(&springShapeDef);
}
这是在类中我启动弹簧和弹簧精灵的方法。
-(id)initWithCoords:(CGPoint)p withSpringType:(int)st
{
self.springType = st;
self.coords = p;
CCTexture2D *texture = [[CCTextureCache sharedTextureCache] addImage:@"metalTexture.png"];
// When initializing the sprite I want to make a polygon (triangle), not a rectangle
self.sprite = [[CCSprite alloc] initWithTexture:texture rect:CGRectMake(0, 0, 32, 32)];
self.sprite.position = ccp(p.x, p.y);
self.sprite.tag = 2;
return self;
}
如何为多边形初始化带纹理的精灵?并且只使多边形的形状具有纹理?谢谢!
答案 0 :(得分:0)
不完全确定,但我认为你可能对Cocos2D中的纹理和Box2D中的碰撞空间的使用感到有些困惑。你不能将精灵的纹理应用于碰撞多边形的确切范围,除非你开始进入纹理坐标的某些细节,但我不认为这将是你想要的结果。通常做什么......
希望我不会在这里你不知道的事情。如果这有帮助或者您有任何其他问题,请告诉我。