を回転からプレーヤー(ボックス)を停止するので、私は「A」と「D」を使用して水平方向に移動することができますプレーヤー(BOX2Dボックス)があります。BOX2Dどのよう
SetLinearVelocity(b2Vec2(speed, object.getB2Object()->GetLinearVelocity().y));
をしかし、私はボックスを移動するときプレイヤーは、スライドが、そのようなコーナーでのロールはありません:
私は箱の摩擦や地面の減少はある程度、これを防止することを考え出したが、それでもかなりregulary起こるともなりますプレーヤーはさらに停止するとスライドします。私は関数SetFixedRotation(true)を試しましたが、これはプレイヤーがすべて一緒に動くのをやめさせるようですが、おそらく回転しようとしていたポイントで終わります。私もSetAngularVelocity(0)を試しましたが、これはまだ非常にゆっくりですが、ボックスを回転させます。表面上を移動するときにプレーヤーが回転しないようにするもう1つの方法はありますか?おかげ
ほとんど回転しないボックスをゼロに摩擦を設定することにより、提案するものpingul行った後、[編集]。それは何かに非常に頻繁に乗っているように見えました。床のための10個の個別のタイルの代わりに、私はタイルを取り除き、幅の広いタイルを作成して問題を止めました!だから私はその箱が次のタイルに沿ってトリップしていたと思う。
//the number of tiles
const unsigned int MAX_TILES = 10;
for(int i = 0; i < MAX_TILES; i++){
//position ,size ,density ,linear_damping ,friction ,isdynamic,b2World
tiles.push_back(new GameObject(vec3(6+i-(MAX_TILES/2), -10, 1), vec3(1, 1, 0), 1.0f ,1.0f ,0.5f ,false ,world_b2));
tiles[tiles.size()-1]->Init(); //Some OpenGL stuff for rendering
tiles[tiles.size()-1]->getMesh()->setTexture(test_sheet.getTexture(2,0)); //gets a texture from sprite sheet class
}
[編集2]
演算ライブラリが使用する:この出来事は、なぜ私はすべてのタイルを知っていると同じ高さ、幅及び位置を持っているように、ここで示したように私の次の問題はその後ですGLM
タイルを水平方向にオーバーラップさせるだけで何もしませんが、これは垂直軸に関係していると思います。プレイヤーが回転しているかどうかにかかわらず、別のタイルに行くと、yの値がわずかに変化します。これは、上または下のいずれかになり、+ -0.003〜だけ変化します。飛び降りると、フロアタイルのいずれかでゲームが始まると、最初の値に戻ります。
摩擦を0にするとどうなりますか? – pingul
私の編集を確認してください:) – MajesticHey