Всем привет, я разрабатываю игру с cocos2d v1, и я использую box2d. Я включаю отображение сетчатки. и я создаю ведро. Я хочу переместить ковш только по оси x, поэтому я сделал b2PrismaticJoint, но проблема в том, что ковш не подходит к земле. вот мой код: `CCSprite * tube = [CCSprite spriteWithFile: @" tube.png "]; tube.position = ccp (SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2); [self addChild: трубка];
b2BodyDef bucketBodyDef;
bucketBodyDef.type = b2_dynamicBody;
bucketBodyDef.position.Set(tube.contentSize.width/PTM_RATIO, tube.contentSize.height/PTM_RATIO);
bucketBodyDef.userData = tube;
tubeBody = world->CreateBody(&bucketBodyDef);
b2PolygonShape bucketShape;
bucketShape.SetAsBox(tube.contentSize.width/2/PTM_RATIO, tube.contentSize.height/2/PTM_RATIO);
// Create shape definition and add to body
b2FixtureDef bucketShapeDef;
bucketShapeDef.shape = &bucketShape;
bucketShapeDef.density = 10.0f;
bucketShapeDef.friction = 0.4f;
tubeFixture = tubeBody->CreateFixture(&bucketShapeDef);
[self createTubeFixtures];
// Restrict bucket along the x axis
b2PrismaticJointDef jointDef;
b2Vec2 worldAxis(1.0f, 0.0f);
jointDef.collideConnected = true;
jointDef.Initialize(tubeBody, groundBody,
tubeBody->GetWorldCenter(), worldAxis);
world->CreateJoint(&jointDef);`
Когда я снимаю соединение, все в порядке ... пожалуйста, посмотрите прикрепленное изображение. Благодарность!
1 ответ
Я сделал небольшую ошибку, которая стоила мне двух дней !! и это было при установке координат тела: b2BodyDef bucketBodyDef; bucketBodyDef.type = b2_dynamicBody; ** bucketBodyDef.position.Set (tube.contentSize.width / 2 / PTM_RATIO, tube.contentSize.height / 2 / PTM_RATIO); ** bucketBodyDef.userData = tube; tubeBody = world-> CreateBody (& bucketBodyDef);
Похожие вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.