В основном у меня есть 2 полигона для моего тела. Когда я добавляю спрайт для userData, положение текстуры не там, где я хочу. Я хочу настроить положение текстуры внутри тела. Вот пример кода, где я устанавливаю это:Как установить положение спрайта внутри тела box2d?
CCSpriteSheet *sheet = (CCSpriteSheet*) [self getChildByTag:kTagSpriteSheet];
CCSprite *pigeonSprite = [CCSprite spriteWithSpriteSheet:sheet rect:CGRectMake(0,0,40,32)];
[sheet addChild:pigeonSprite z:0 tag:kPigeonSprite];
pigeonSprite.position = ccp(p.x, p.y);
bodyDef.position.Set(p.x/PTM_RATIO, p.y/PTM_RATIO);
bodyDef.userData = sprite;
b2Body *body = world->CreateBody(&bodyDef);
b2CircleShape dynamicCircle;
dynamicCircle.m_radius = .25f;
dynamicCircle.m_p.Set(0.0f, 1.0f);
// Define the dynamic body fixture.
b2FixtureDef circleDef;
circleDef.shape = &dynamicCircle;
circleDef.density = 1.0f;
circleDef.friction = 0.3f;
body->CreateFixture(&circleDef);
b2Vec2 vertices[3];
vertices[0].Set(-0.5f, 0.0f);
vertices[1].Set(0.5f, 0.0f);
vertices[2].Set(0.0f, 1.0f);
b2PolygonShape triangle;
triangle.Set(vertices, 3);
b2FixtureDef triangleDef1;
triangleDef1.shape = ▵
triangleDef1.density = 1.0f;
triangleDef1.friction = 0.3f;
body->CreateFixture(&triangleDef1);
Могу ли я попытаться удалить все, что не является существенным из фрагмента кода? Плотность и трение, например, вряд ли имеют какое-то отношение к позиционированию спрайтов. Я, например, неохотно прохожу через большой блок кода, чтобы ответить на простой вопрос. С другой стороны, если вы не уверены, что что-то не влияет на вашу проблему, хорошо оставить ее. Но, пожалуйста, попробуйте сократить ее до минимума. – Felixyz