6

私は、プレーヤーがプログラムで線を引き、ボールがそれらから跳ね返るwp7ゲームを開発しています。私はXNAとfarseer物理学を使用しています。ユーザーが線を引き、次にプログラムがそれを取得して物理オブジェクト、または少なくともvector2のリストに変換するための最良の方法は何ですか?TouchLocationsのリストを作成しようとしましたが、添付した画像のように、ユーザーがあまり遅く描画しないと、むらが出てしまいます。助言がありますか?ありがとう http://img829.imageshack.us/img829/3985/capturehbn.png

ここにいくつかのコードがあります:私はgamestatemanagementサンプルを使用しています、そしてこれはHandleInputメソッドにあります

foreach (TouchLocation t in input.TouchState) {
  pathManager.Update(gameTime, t.Position);
}

pathManagerクラスは、描画可能な物理オブジェクトであるパスクラスのコレクションを管理します。これがpathManager.Updateです

public void Update(GameTime gameTime, Vector2 touchPosition) {
  paths.Add(new Path(world,texture, new Vector2(5,5) ,0.1f));
  paths[paths.Count-1].Position = touchPosition;
}

これは私が今していることであり、私は何のためにでもそれを捨てることをいとわない。タッチ位置ごとに5x5の長方形を使用するとパフォーマンスが低下すると思われるかもしれませんが、farseerを使用すると、ほとんどフルスクリーンであってもドロップは見られませんでした。ただし、このシステムでは、線が速く描画されると、滑らかな線はまったく作成されません。

これが役立つとは思えませんが、ここにPathコンストラクターがあります。

public Path(World world, Texture2D texture, Vector2 size, float mass) {
  this.Size = size;
  this.texture = texture;
  body = BodyFactory.CreateRectangle(world, size.X * pixelToUnit, size.Y * pixelToUnit, 1);
  body.BodyType = BodyType.Static;
  body.Restitution = 1f;
  body.Friction = 0;
  body.Friction = 10;
}
4

1 に答える 1

1

XNAを使用して線を引くにはどうすればよいですか?

プリミティブを描画する最良の方法は、basiceffectシェーダーを使用することです。これはハードウェアによって加速されます。必要に応じて、テクスチャを追加することもできます。

WP7でも同じかどうかはわかりませんが、少なくともWindows7では機能します。

于 2012-12-26T13:37:42.427 に答える