Я новичок в игровом мир я оштукатурен, чтобы сделать прыжок физика тела ..
вот как я определил телоделают физику тело скачок в cocos2d-Box2d
Cycle = [CCSprite spriteWithFile:@"Panda.png"];
[self addChild:Cycle z:3];
// Create a world
b2Vec2 gravity = b2Vec2(0.0f, -8.0f);
world = new b2World(gravity);
// Create edges around the entire screen
b2BodyDef groundBodyDef;
groundBodyDef.position.Set(0,0);
b2Body *groundBody = world->CreateBody(&groundBodyDef);
b2EdgeShape groundEdge;
b2FixtureDef boxShapeDef;
boxShapeDef.shape = &groundEdge;
//wall definitions
groundEdge.Set(b2Vec2(0,0), b2Vec2(screenSize.width/PTM_RATIO, 0));
groundBody->CreateFixture(&boxShapeDef);
groundEdge.Set(b2Vec2(0,0), b2Vec2(0,screenSize.height/PTM_RATIO));
groundBody->CreateFixture(&boxShapeDef);
groundEdge.Set(b2Vec2(0, screenSize.height/PTM_RATIO),
b2Vec2(screenSize.width/PTM_RATIO, screenSize.height/PTM_RATIO));
groundBody->CreateFixture(&boxShapeDef);
groundEdge.Set(b2Vec2(screenSize.width/PTM_RATIO, screenSize.height/PTM_RATIO),
b2Vec2(screenSize.width/PTM_RATIO, 0));
groundBody->CreateFixture(&boxShapeDef);
// Create ball body and shape
b2BodyDef ballBodyDef;
ballBodyDef.type = b2_dynamicBody;
ballBodyDef.position.Set(300/PTM_RATIO,100/PTM_RATIO);
ballBodyDef.userData = Cycle;
body = world->CreateBody(&ballBodyDef);
b2PolygonShape dynamicBox;
dynamicBox.SetAsBox(.5f, .5f);//These are mid points for our 1m box
// Define the dynamic body fixture.
b2FixtureDef fixtureDef;
fixtureDef.shape = &dynamicBox;
fixtureDef.density = 1.0f;
fixtureDef.friction = 0.3f;
body->CreateFixture(&fixtureDef);
и прикосновения началось я подаю линейный импульс, как
b2Vec2 force = b2Vec2(30, 30);
body-> ApplyLinearImpulse(body->GetPosition(),force);
так может любой орган, скажите мне, что я делаю неправильно ..
заранее спасибо ..
что вы хотите достичь, что у вас сейчас? добавьте некоторые подробности другим, чтобы понять вашу проблему. – Morion
прыжок = одноразовая восходящая сила. Если он не прыгает, попробуйте изменить силу. – LearnCocos2D
@ LearnCocos2D Я сделал это с этим: // Работа в горизонтальном направлении b2Vec2 locationWorld; locationWorld = b2Vec2 (0.0f, 8.0f); double Force = body-> GetMass(); body-> ApplyLinearImpulse (Force * locationWorld, body-> GetWorldCenter()); но сила применяется в горизонтальном направлении, я хочу, чтобы она была вертикальной .... –