C# Box2Dの多角形オブジェクト

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

C# Box2Dの多角形オブジェクト

#1

投稿記事 by » 14年前

C#のBox2Dで、多角形のオブジェクトを作りたいのですが、
{
                BodyDef bodyDef2 = new BodyDef();
                bodyDef2.Position.Set(vClick.X, vClick.Y);
                Body body = m_world.CreateBody(bodyDef2);
                PolygonDef shapeDef2 = new PolygonDef();
                shapeDef2.VertexCount = 3;
                shapeDef2.Vertices[0].Set(0, 0);
                shapeDef2.Vertices[1].Set(50, 50);
                shapeDef2.Vertices[2].Set(50, -50);
                shapeDef2.Density = 1.0f;
                shapeDef2.Friction = 0.3f;
                shapeDef2.Restitution = 0.5f;
                body.CreateShape(shapeDef2);
                body.SetAngularVelocity(0);             
                body.SetLinearVelocity(new Vec2(0, 0)); 
                if ( !chkFix.Checked ) body.SetMassFromShapes();
            }
とすると、コンパイルは通るのですが、エラーのウインドウが出てしまいます。
何かとてもたくさんのことが書いてあります。
これはすごい数のエラーが出ているということなのでしょうか?

エラーの意味と対策を教えてただけないでしょうか?
よろしくお願いします。

Re:C# Box2Dの多角形オブジェクト

#2

投稿記事 by » 14年前

すいません。画像載せるの忘れてました。

ISLe

Re:C# Box2Dの多角形オブジェクト

#3

投稿記事 by ISLe » 14年前

> 何かとてもたくさんのことが書いてあります。
> これはすごい数のエラーが出ているということなのでしょうか?

〇〇メソッドの中から呼ばれた××メソッドの中から呼ばれた△△メソッドの中から呼ばれた〇×△メソッドでエラー(例外)が発生したというときの呼び出し履歴の一覧です。
画像の上の方を見るとfrmMain.picDraw_MouseDownメソッドの中で呼ばれたBody.CreateShapeメソッドという関係が読み取れます。
いちばん上にはBox2DXDebug.Assertとあります。
Assertというのは間違った引数が与えられたのをチェックするために置かれるものです。

> body.CreateShape(shapeDef2);

理由はわかりませんがここで与えた引数がNGということになります。

Re:C# Box2Dの多角形オブジェクト

#4

投稿記事 by » 14年前

とても分かりやすい解説ありがとうございます。

>理由はわかりませんがここで与えた引数がNGということになります。
そうだったのですね。 うーん... 理由が気になりますねー
対処の仕方も分からないですし、どうしましょうか。

あと、多角形と言いましたが三角形の間違いです。 画像

スキマ妖怪

Re:C# Box2Dの多角形オブジェクト

#5

投稿記事 by スキマ妖怪 » 14年前

もう解決されているかも知れませんが、回答者さんが他に付きそうにないので一応書いておこうと思います。
C#もBox2Dも詳しくないので間違っている可能性も有りますので、参考程度にでもなればと思います。


ポリゴンの向き、…というか頂点の作成順が違いませんか?
反時計回りにしないといけなかったような…。

ユーザーマニュアルの4章あたりを見ると書いてあるかもしれません。

Re:C# Box2Dの多角形オブジェクト

#6

投稿記事 by » 14年前

スキマ妖怪さん、ありがとうございます。

本当ですね。頂点を逆から作成するとちゃんと動きました。
ユーザーズマニュアルは読んだことがあるので、頂点の向きに決まりがあるのは知っていたのですが、
今回はすっかり忘れていました。

ISLeさん、スキマ妖怪さん、ありがとうございました。 画像

閉鎖

“C言語何でも質問掲示板” へ戻る