タグ付けされた質問 「xna-4.0」

XNA Game Studio 4.0は、Visual Studioを使用してWindows Phone、Xbox 360コンソール、およびWindowsベースのコンピューター向けのゲームを作成できるプログラミング環境です。

3
Vector3対Vector2-パフォーマンス、使用法?
私は現在XNAをいじって、シンプルな2Dプラットフォーマーを作成しています。複数のレイヤーを追加して少し挑戦することを考えていました。 Vector2自分の位置にを使用する代わりに、を使用してVector3、Zレイヤーの深さとしてのみ使用します。ただし、不明な理由[1]の間Vector2で演算子を使用できないVector3ため、ゲーム内の他のすべての、たとえば、加速、速度、オフセットを変更して、エラーなしで実行できるようにしました。Vector2position += offset また、回転変数をからfloatに変更し、Vector3そのZ値を使用してテクスチャを回転させました。私が使用することを計画していますXし、Y規模フリップあなたはスーパーペーパーマリオ効果を得るので、私のテクスチャをします。 しかし、これらVector2のすべてをsで変更した後Vector3、私はそれについて少し気分が悪くなりました。これはゲームのパフォーマンスにどのように影響しますか?私の小さなプラットフォーマーゲームのパフォーマンスについて心配する必要はないはずですが、それだけに興味があります。 間の任意の顕著なパフォーマンスがありVector2sおよびVector3sがそれらを追加したり掛けるとき、たとえば、または呼び出すときNormalize、TransformまたはDistance? [1]余談ですが、Vector3とVector2の間の計算に演算子がないのはなぜですか?

1
XNAでウィンドウのサイズ変更中にストレッチを停止するにはどうすればよいですか?
ウィンドウモードのXNAゲームでは、ユーザーがウィンドウのサイズを変更すると、ゲームがウィンドウの更新を停止し、ユーザーがマウスを離してサイズ変更が完了するまで、最後に描画されたフレームが引き伸ばされて変形します。 サイズ変更イベント中にゲームを「通常」に実行し続け、フレームを更新し、画面を再描画する方法はありますか? ハードウェア管理リソースが継続的に作成および破棄されるため、サイズ変更中にレンダーループを維持することは不可能または推奨されない可能性があることを理解していますが、醜いストレッチを停止する方法はありますか?理想的には、左上に既存のフレームを拡大縮小せずに残すか、それが不可能な場合は黒い画面にします。
8 xna  xna-4.0  .net 

3
パスの最後で移動オブジェクトをスムーズに停止させるにはどうすればよいですか?
この質問の言い方は十数通りありますが、私の考えを一致させるために、私は目の前の問題に合わせてそれを表現しています。 そこで、指定されたポイントから別のポイントに移動し、最初のポイントに戻って、2つの間を直線で通過できるようにするフローティングプラットフォームを作成しています。ただし、少し面白くするために、プラットフォームにいくつかのルールを追加したいと思います。 ワールドデータのタイル値全体の複数を移動するようにコーディングしています。したがって、プラットフォームが静止していない場合、少なくとも1つのタイル幅全体またはタイル高さを移動します。 1つのタイルの長さ内で、停止から指定された最大速度まで加速させたいと思います。 1つのタイルの長さの距離に達したら、特定のタイル座標で停止するまで減速し、逆のプロセスを繰り返します。 最初の2つの部分はそれほど難しくありません。基本的に、3番目の部分では問題があります。プラットフォームがタイル座標で正確に停止するようにしたいのですが、加速度で作業しているので、1つのタイルの長さに達したら、プラットフォームの現在の速度を格納する値に反対方向の加速度を適用し始めるのは簡単に思えます。距離(タイルが複数のタイル長を移動していると仮定しますが、単純にするために、それがそうであると仮定しましょう)-しかし、問題は、この効果を生み出すために増加する加速の正しい値は何でしょうか?どうすればその値を見つけることができますか?
8 xna  2d  xna-4.0  physics 

1
360度のヘビに近づく方法
私は最近XNAに入って、大好きだと言わざるを得ません。Hello Worldゲームの一種として、クラシックゲーム「Snake」を作成することにしました。90度バージョンは、非常にシンプルで実装が簡単でした。しかし、左矢印と右矢印を使用して360度回転できるバージョンを作成しようとすると、ある種の問題が発生しました。 私が今やっていることは、90度バージョンに由来します。尾から始まり、頭の直前で終わる各蛇の体の部分を反復します。これは、100ミリ秒ごとに移動するときにうまく機能します。この問題は、技術的には60 fpsではなく6 fpsでゲームが進行するため、途切れ途切れのスタイルのゲームプレイになることです。 ゲームループごとにヘビを移動したいと思います。しかし、残念なことに、ヘビは頭のサイズの速度で動くため、速度が速すぎます。これは、頭が現在の方向(32、32)ではなく、その方向に(2、2)などのはるかに小さい増分で移動する必要があることを意味します。私は学校を管理している間、このゲームに数週間取り組んできたので、これを達成する方法を考えすぎていたと思います。それはおそらく簡単な解決策です、私はそれを捕まえていません。 これは、私が理解できることに基づいて、私が試したもののいくつかの疑似コードです。それを行う別の方法を本当に考えることはできません。 for(int i = SnakeLength - 1; i > 0; i--){ current = SnakePart[i], next = SnakePart[i - 1]; current.x = next.x - (current.width * cos(next.angle)); current.y = next.y - (current.height * sin(next.angle)); current.angle = next.angle; } SnakeHead.x += cos(SnakeAngle) * SnakeSpeed; SnakeHead.y += …

2
XNA曲のループ間の遅延をなくしますか?
XNAを使用してゲームを作成し、バックグラウンドミュージックを正しくループさせようとしています。ファイルは約30秒の長さのMP3なので、としてインスタンス化しましたSong。完全にループさせたいのですが、MediaPlayer.IsRepeatingプロパティをに設定してもtrue、曲が再び始まるまでに常に約1秒の遅延があります。曲が瞬時にループするようにこの遅延を解消して、より滑らかに再生できる方法はありますか?
8 xna  xna-4.0  music 

2
XNAの別のクラスからGame1クラスの変数にアクセスするにはどうすればよいですか?
SpriteManagerXNAでクラスを記述しようとしていますが、Game変数にアクセスする必要があります。たとえば、Game.Contentプロパティはテクスチャのロードに非常に役立ちGame.GraphicsDevice.Viewport、ウィンドウサイズを取得するのに役立ちます。 今のところ、私は次のクラスを持っています: public MainGame : DrawableGameComponent { public SpriteManager<Enemy> EnemyManager { get; get; } public SpriteManager<Powerup> PowerupManager { get; set; } ... } SpriteManagerクラスでこれらの変数にアクセスするには、3つの方法が考えられます。 私のスプライトマネージャークラスをから派生させGameComponentます。これは私のスプライトマネージャがで使用されていることを除いて、理想的ですMainGame、GameComponent。 ((Game) Game1)変数にアクセスするために使用します。ただし、この種のキャストを行うことは醜く、カプセル化を壊します。 からすべてを渡しますMainGame。たとえば、EnemyManagerは敵をスポーンするたびにランダムな敵タイプをロードする必要があるため、でテクスチャをロードする代わりに、プロパティをMainGame渡しEnemyManagerてGame.Contentテクスチャのロードを処理させます。しかし、これが状況を処理する最良の方法であるかどうかはわかりません。指を置くことはできませんが、ある意味「間違っている」ように見えます。 これを達成するための最良の方法についていくつかのアドバイスを使用できます。

3
フォルダからすべてのコンテンツを読み込む
私が聞きたいのですが、フォルダからすべてのコンテンツをxnaにロードする方法はありますか? たとえば、私のコンテンツには次の ようなものがあります: 画像/ヒーロー 画像/車の 画像/ツリー このようなものを作りたい Dictionary<string,Model> models = new ... foreach(string name in content.getNames("Images")) { models[name] = content.load<Model>("Images\\" + name); }
8 xna  xna-4.0 

4
XNAゲームでイベントを使用する必要がありますか?
画面にボタンを描画するボタンクラスを作成しました。それをクリックすると、何かが起こっているのを見たいです。WinFormでは、ボタンのOnClickイベントを使用します。XNAはどうですか? OnClickイベントをボタンクラスに追加する必要がありますか?それは良い習慣ですか?それ以外の場合、ゲームループでイベントをどのように処理しますか?
8 xna  xna-4.0  .net  events 


3
反転したテクスチャ
座標系の原点が画面の中心にあるこの物理ボディに合わせてテクスチャを描画しようとしています。(XNA)Spritebatchのデフォルトの原点は左上隅に設定されています。テクスチャを正しく配置しましたが、テクスチャが上下反転していることに気付きました。つまり、レンダリング時に上向きの矢印テクスチャが下向きになります。数学のどこが間違っているのかわかりません。 私のアプローチは、すべてを物理のメートル単位に変換し、それに応じて描画することです。 Matrix proj = Matrix.CreateOrthographic(scale * graphics.GraphicsDevice.Viewport.AspectRatio, scale, 0, 1); Matrix view = Matrix.Identity; effect.World = Matrix.Identity; effect.View = view; effect.Projection = proj; effect.TextureEnabled = true; effect.VertexColorEnabled = true; effect.Techniques[0].Passes[0].Apply(); SpriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend, null, DepthStencilState.Default, RasterizerState.CullNone, effect); m_Paddles[1].Draw(gameTime); SpriteBatch.End(); ここで、Paddle :: Drawは次のようになります。 SpriteBatch.Draw(paddleTexture, mBody.Position, null, Color.White, 0f, new Vector2(16f, 16f), …

3
オブジェクトをパスに沿って移動させるにはどうすればよいですか?
下の画像のようなものを取得しようとしています。ご覧のように、高速道路があり、その中には移動しているオブジェクトがあります(ミリ秒)。通りの行動はパイプラインのようなものだと思います。高速道路がオブジェクトをロードすると、オブジェクトは最初に表示され、高速道路のもう一方の端に到達するまで高速道路を移動します。 私の主な問題は、いくつかのオブジェクトを高速道路の内側だけに移動するにはどうすればよいですか?

1
両方のプロファイルのXNA 4ゲーム
私はXNA 4でゲームを書いています。このバージョンには、高解像度とリーチの2つのプロファイルがあります。私の問題は、これらのプロファイルごとにゲームコードが必要であり、2つのプロジェクトがあり、両方ですべての変更を行うのは非常に不快なことです。私のアイデアは、プリプロセッサディレクティブを使用することでした(これの名前はわかりません、http://msdn.microsoft.com/en-us/library/ed8yd1ha%28v=vs.71%29.aspx)。プロファイルに問題がある場所。プログラムは2回(プロファイルごとに)コンパイルし、ディレクティブとプロジェクト設定を別のプロファイルに手動で変更する必要があるという問題のみがあります。そして私の質問は:それは良い方法ですか?これを行う方法のより良い、よりきれいな方法はありますか?
7 xna  c#  xna-4.0 

1
Update(GameTime)メソッドとPauseの実装に関する問題
私は一時停止機能を実装しており、プレーヤーの画面を暗くしてゲームプレイの更新を停止するという点で正しく機能します。 問題は、一時停止中にGameTimeが増加し続けることです。そのため、別の敵を生成する前にgameTimeとpreviousSpawnTimeをチェックするメソッドがめちゃくちゃになり、ゲームの一時停止が長すぎると、次の敵の描画が早すぎることがわかります。 これが敵のアップデート用のコードです。 private void UpdateEnemies(GameTime gameTime) { // Spawn a new enemy every 1.5 seconds if (gameTime.TotalGameTime - previousSpawnTime > enemySpawnTime) { previousSpawnTime = gameTime.TotalGameTime; // Add an Enemy AddEnemy(); } ... gameTimeに依存する他のメソッドもあります。合計休止時間を取得し、それを合計ゲーム時間から差し引こうとしましたが、それが私がこれを解決しようとする方法である場合、それが正しく機能するようには見えません。 他のコードが必要な場合はお知らせください。ありがとうございました。

1
歩行/衝突用のサイドスクローラー可変地形高度マップ
私はXNAの傾斜したタイルを移動するのをいじっていますが、それは半機能的ですが完全に満足できるものではありません。また、あらかじめ決められた勾配のセットがあると、「有機的」に見える地形が十分に得られない可能性があるとも考えていました。また、スロープごとにいくつかの異なるタイプのタイルを作成する必要があるという問題もあります(私が理解しているように、45度のタイルのみが完全にチェーンされます)。 傾斜したタイルがつながっているエッジのグリッチで問題が発生したため、傾斜したタイルのつながったチェーンをスキャンして新しい大きな三角形として扱うことを考えていました。しかし、これは地形の曲率を制限する問題に戻ります。 したがって、私が今やりたいのは、レベル(またはレベルのセクション)のテレインの単純な画像またはテクスチャを作成し、テレインの単純な高さマップ(各XのYの)を生成することです。プレーヤーのY位置は、X位置に基づいて更新されます。 これを行う簡単な方法(またはこの問題を解決するより良い方法)はありますか?私がこの方法で見ることができる主な問題は、歩くことができる地上の領域がある場合です。多分歩くことができるすべての地上エリアをマッピングする方法はありますか? 私はこの有用なコードを調べてきました:http : //thirdpartyninjas.com/blog/2010/07/28/sloped-platform-collision/ しかし、実際のポイント/ベクトルを生成する方法が必要です。 編集:私は投稿したリンクを使用して傾斜したパスを事前に生成しようとしましたが、今は提案したとおりにピクセルごとの衝突を使用する必要があると確信しています。私はhttp://create.msdn.com/en-US/education/catalog/tutorial/collision_2d_perpixelで例を見ていて、衝突が検出されたときにスプライトを調整する方法を理解しようとしています。デビッドが示唆したように、私はいくつかのセンサーポイント(足、側面、下部中央など)を作成し、これらのポイントが実際に2番目のテクスチャの不透明な部分(単純な傾斜)と衝突するときを簡単に検出できます。衝突に基づいて実際にスプライトの位置を調整する方法のアルゴリズムに問題があります。 スプライトの右足の斜面との衝突を検出したとしましょう。傾斜テクスチャデータをスキャンして、スプライトの足を傾斜の内側に配置しないようにY位置を見つけるにはどうすればよいですか?例で1D配列として格納する方法は少しわかりにくいですが、代わりに2D配列としてデータを格納する必要がありますか? また、衝突チェックを水平方向と垂直方向に分離するのが最善であると何人かの人々が述べていることに気づきました。なぜそれが正確なのですか?

2
XBoxでXNAゲームを入手するための実際のコストは?
Xboxに1のゲームを取り込むには多くのハードルがあるようですが、これまでのところ明らかにしました。 Visual Studioが必要です(ゲームが商用化されると、Expressは使用できなくなりますが、プロ向けに支払う必要があります)。1000ドル以上 次にXBoxを購入して、ハードドライブも必要だと判断します。Xboxハードドライブも購入してください。$ 400 XBox Gold LIVEサブスクリプションを購入する必要があります。$ 70(無料) AppHub Creators Clubサブスクリプション$ 100を購入する必要があります その後、結局のところ、XBoxでインディーズゲームをダウンロードする場所を見つけることさえできません。真剣にWTF-これをすべて実行した後、私はWebGLに習熟し、すべてを無料で行うことができた... ゲームを公開する前に、この道(穴)をずっと進む前に、他の隠されたハードルはありますか? 更新:「オーストラリアの分類委員会がすべてのゲームを評価する必要があるため、オーストラリアではインディーゲームを利用できません。また、法外な費用がかかるため、何かを壊さなければなりません。 ..

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.