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

XNAはMicrosoftによるゲームフレームワークで、Windows、Windows Phone、Xbox 360への展開を可能にします。

2
レベルでオープンスペースを見つけるための最良の方法は何でしょうか?
私は、ペイントを使用してレベルにタイルを追加する2Dゲームに取り組んでいます。現在、ワープタイルを追加するように取り組んでいます。特定の方向指向のペイントが2つのポイント(開始と終了)を使用して、タイルが指す方向(左、右、上、下)を決定するように設定しました。ワープタイルにはこれらのポイントがありますが、他の2つのリスト(ワープの開始と終了)に追加されました。ワープの仕組みは次のとおりです。プレーヤーが1つのタイルに当たると、対応するワープタイルにテレポートされます。さて、これを適切に機能させるには、プレイヤーが壁やマップの外にテレポートできないようにする必要があります。したがって、壁から1スペース離れた開いたタイルにポイントを移動する必要があります。 これを行う最善の方法は何でしょうか?
7 xna  c#  tiles 

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

4
ゲームエディター-画面がクリックされたときに、クリックされたオブジェクトをどのように特定しますか?
ゲームエディターを作成しようとしています。現在は、さまざまなタイプのシェイプなどを配置しています。XNAで3Dを描画しながら、Windowsフォームでこれを行っています。したがって、画面にいくつかの図形があり、画面をクリックした場合、クリックしたこれらのオブジェクトの「どれ」を識別できるようにしたいと考えています。 これに最適な方法は何ですか?後ろに2つのオブジェクトがあるため、後ろのオブジェクトではなく前の1つのオブジェクトを認識できるはずです。また、カメラを回転させて後ろの1つをクリックすると、最初のオブジェクトではなく、それを識別できるはずです。 これについて賢明な方法はありますか?

2
2つの長方形間の衝突方向を決定する方法は?
2つの長方形の間で衝突が発生する方向を判別する方法を理解しようとしています。 1つの長方形は移動しません。もう一方の長方形は、任意の方向の速度を持っています。衝突が発生したときに、移動する長方形の位置をインパクトポイントに設定できるようにしたいと考えています。 どの方向から衝撃が発生するのかわからなくなったようです。厳密に垂直方向または水平方向に移動している場合、優れた検出を実現します。しかし、同時に両方向に移動すると、奇妙なことが起こります。 2つの長方形の間で衝突が発生する方向を決定する最良の方法は何ですか?

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 

2
HLSL-2Dでの影の作成
シャドウを作成する方法は、次のテクニックです。http: //www.catalinzima.com/2010/07/my-technique-for-the-shader-based-dynamic-2d-shadows/ しかし、HLSLに質問があります。私が現在行っている方法は、白黒の画像です。ここで、黒は「オブジェクト」を意味し、白は「何もない」を意味します。次に、チュートリアルのように画像を変形します。これはピクセルシェーダーで行いますが、画面にレンダリングするのではなく、テクスチャにレンダリングして、アプリケーションに戻します。次に、これを取得して影を作成し、グラフィックカードに送り返して歪みを元に戻します。影が追加された後、これが戻ってきて、影のステンシルがあります。これを元の画像の上に配置してグラフィックスカードに送り返すと、画面に表示されます。 私にとってこれはたくさんのやり取りです。これを回避する方法はありますか? 私が抱えている問題は、基本的にテクスチャのすべての位置を3回通過し、元のテクスチャの代わりに毎回新しい新しいテクスチャを使用する必要があることです。パスを読み上げてみましたが、正しい方向に進んでいるとは思いません。 助けて?
7 xna  2d  hlsl  gpu 

2
C#パーリンノイズ-「エンドレス」テレインチャンクの生成?
私は現在、C#の学習と楽しみの両方のために、C#で小さなサイドスクローラーを作成しています。現在、私は世界を生成する単純な乱数ジェネレーターを持っていますが、それはそれほど優れているわけではありません。そのため、いくつかの調査により、Perlin Noise生成がかなり役立つことを発見しました。問題は、いくつかのチャンクで構成された「無限の」風景が欲しいということです。 基本的に私の質問/懸念は: 例としてminecraft(3次元を無視)を使用して、Notchはどのように各チャンクを互いに完全に接続するのですか?トンネル、洞窟、鉱脈、山、平坦な土地、バイオームなどは、各チャンクが個別に生成される場合でも、場合によっては後日生成される場合でも、すべて相互に接続されています。これは私にとって重要です。プレイヤーが右に歩くことができるようにして、彼らが歩いているときに、地下のトンネルや洞窟システムなど、以前の風景に接続するより多くの風景を生成します。 #1から離れると、各チャンクが正方形であり、世界の高さが10正方形で、幅が無限の正方形であるという仮定の下で、これはどのように達成されますか?つまり、各「チャンク」は128x128タイルであり、世界は合計で1,280タイルです。(これは、選択した場合に無限に深いマップを作成できるようにするためです。また、チャンク/スクエアの4辺すべてを接続して、前のスクエア/チャンクが行っていた処理を続行できる必要があることを示すためです)。
7 xna  c#  2d  perlin-noise 

2
Windows Phone Performance Analysisは、ゲームの実行を高速化します。考えられる理由は?
私が作成していたXNAゲームは、私のWP7デバイスでゆっくり実行されていました。しかし、Windows Phone Performance Analysisでボトルネックを見つけるためにそれを開始したとき、ゲームは同じデバイスでスムーズに実行されました。 少し後で問題を見つけましたが、これは隣接チェック機能でした。機能を最適化しましたが、ゲームは正常に動作します。 パフォーマンス分析モードでゲームが魔法のようにスピードアップしたのはなぜですか?考えられる説明はありますか? これは、Perf分析モードでは高速に実行されたコードですが、それ以外の場合は低速でした。タワーディフェンスゲームでのダメージ対処機能です。 foreach (Target myTarget in _targets) { for (int x = -1; x <= 1; x++) { for (int y = -1; y <= 1; y++) { if (x == 0 && y == 0) continue; try { Tile adjacent = _tiles[(int)myTarget.CurrentTile.X + x, …

1
グローバルキーボードの状態
キーボード入力の処理について次の考えがあります。次のように、「メイン」のゲームクラスで入力をキャプチャします。 protected override void Update(GameTime gameTime) { this.CurrentKeyboardState = Keyboard.GetState(); // main :Game class logic here base.Update(gameTime); this.PreviousKeyboardState = this.CurrentKeyboardState; } 次に、キーボードの状態(internalスコープを持つ)を他のすべてのゲームコンポーネントで再利用します。この背後にある理由は、1)キーボード処理の負荷を最小限に抑え、2)同様のキーボード状態変数を使用して他のすべてのクラスの「汚染」を減らすことです。 私はゲーム開発とXNA開発の両方でまったくの初心者なので、これらすべてが妥当に聞こえるかどうか知りたいのですが。 UPDATE:誰かが興味を持っている場合によって示唆されているように、実際のユーティリティクラス、デビッドGouveiaの、私が作成したここで見つけることができます。

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
複数のゲームで同じウィンドウを再利用することは可能ですか?
特に、私はC#とXNA、そして明らかにWindowsについて考えています。通常のXNAゲームであるメインゲームがあるとしますが、ある時点で、XNAにも実装されているがゲームとは完全に独立したミニゲームに一時的に切り替えたいと考えています。 同じウィンドウハンドルを再利用しながら、2つのゲームに切り替えたり、元に戻したりする方法はありますか?また、古い状態をメモリに保持することもできますが、この永続的なファイルへの書き込みも実装できます。 また、最初のゲームに戻るときに、ミニゲームのメインメソッドによって返された値にアクセスする方法はありますか?たとえば、プレーヤーがミニゲームをクリアしたかどうかに応じて、1または0になります。 アンドリュー・ラッセルは書いている: ミニゲームとメインゲームを同じプログラム内の別々のクラスに構築する必要があります。これらの各クラスには、Update、Draw、Initializeなどのメソッドが必要です。次に、これらのメソッドを呼び出して一度に1つのゲームのみをアクティブにする何らかの種類のマスターコントローラーを用意する必要があります(これは単にメインゲームクラスにある場合もあります)。 答えてくれてありがとう。あなたの提案は、私が通常のゲーム状況で行うことです-私がミニゲームとそのコンテンツのすべてを作成している状況です。 しかし、これはゲームではなく、グラフィックアドベンチャーを作成するためのゲームメーカーツールであり、特定のゲームイベントに応答して外部ミニゲームを接続する必要性を感じるのはエンドユーザーです。 私が交換しようとしている古い内部エンジンはFlashで行われ、メインのSWF内にSWFをロードするだけでこの問題を解決しました。ほとんどの場合、問題なく動作しました。同様のことをしようとしていますが、現在XNAを使用しています。 しかし、あなたの電車や考えに従って、おそらくすべてのミニゲームの基本クラスまたは共通インターフェイスを含む個別のアセンブリを作成し、それをdllとしてコンパイルできます。次に、ユーザーはそのライブラリを参照し、インターフェイスを実装して、実行時にエンジンによってロードされ、メインゲーム内の別の状態として実行される独自のライブラリにコンパイルします。私はいくつかの隠された影響を逃していますか?
7 xna  c#  windows 

1
レイヤーの深さを維持しながら2Dでステンシルを使用しようとしています
これは、参照フレームを取得できるように、現在行われていることの画面です。 私が遭遇している問題は、描画呼び出し中に実行しているテクスチャスワップの量が原因で、ゲームの速度が低下することです。タイルの描画ごとに、壁、キャラクター、床、およびすべてのオブジェクトがそれらのタイプを含むそれぞれのスプライトシート上にあるため、読み込まれたテクスチャは、適切にレイヤー化するためにスプライトを循環して描画するときに、3〜5回以上スワップします。 今、私はすべての一般的なオブジェクトをそれぞれのリストにまとめ、layerDepthを使用してそれらをそのように描画してみましたが、私が直面している新しい問題はドア/ウィンドウの方法に関係しています壁に描かれています。つまり、ステンシルを使用して、ドア/窓の形状で描画された壁のブロックを一掃し、壁が描画されるときにドア/窓のサイズの穴ができるようにしました。 これは、一般的なオブジェクトをグループ化するのではなく、タイルごとに壁に描画を設定する方法です。 最初に、ドア/窓がこの壁にあるかどうかを確認します。そうでない場合は、すべての手順をスキップして、通常どおりに描画します。さもないと 現在のspriteBatchを終了する すでに描画されたものを保持するために、透明色でバッファをクリアします ステンシル設定で新しいスプライトバッチを開始する ドアエリアを描く spriteBatchを終了する 以前に設定されたステンシルを考慮した新しいスプライトバッチを開始します 穴を開けて描かれる壁を描きます そのスプライトバッチを終了 タイルの描画を続行するには、通常の設定で新しいスプライトバッチを開始します タイルごとの描画では、どの描画を何の上に描画するかをlayerDepthを使用して整理していないため、深度/ステンシルバッファをクリアすることは重要ではありませんでした。 タイルごとではなく、一般的なオブジェクトのリストから描画しているので、描画呼び出しが大幅に高速化されましたが、ステンシルシステムがドアや窓の領域を隠すための方法を理解できないようです。壁に引き込まれます。問題の根本は、DepthStencilStateを変更するためにspriteBatchを終了すると、現在のRenderTargetがフラットになり、線の下に描画されたものの深度ソートがなくなるということです。つまり、ステンシルはドアや窓のある壁ごとに1回発生する必要があるため、ゲームの世界での奥行きや位置に関係なく、壁は常にすべての上に描画されます。 誰かがこれを回避する方法を知っていますか?簡単に言うと、特定のスプライトの一部をステンシル/マスキングしながら、レイヤーの深さでソートしたものを描画する方法が必要です。
7 xna 


3
動作/属性GameComponentアーキテクチャ
私は大学生で、ゲーム開発は私にとって少し趣味です。私は新しいゲームを書いていて、ゲームエンジンをより柔軟に(そして将来の取り組みのための強固な基盤を提供できるようにするために)開発するための新しいアプローチを探しています。ゲームエンティティを表すために深い継承に依存するのではなく(継承ツリーのルートノードとリーフノードが重い場合や、場合によってはダイヤモンドの継承につながる可能性がある)方法に関するいくつかの記事を見つけましたが、より良いアプローチはロジックをモデル化することですコンポーネント内(より良い、動作と属性)。 これを示すプレゼンテーションは次のとおりです。http: //www.gdcvault.com/free/gdc-canada-09 「ゲームオブジェクトコンポーネントアーキテクチャの理論と実践...」 XNAとC#を使用してこれを実装しています。私はエンティティクラスがあります: class Entity { private Game1 mGame; private Dictionary<AttributeType, object> mAttributes; private Dictionary<BehaviorType, Behavior> mBehaviors; public Entity(Game game) { mGame = game; mAttributes = new Dictionary<AttributeType, object>(); mBehaviors = new Dictionary<BehaviorType, Behavior>(); } public Game GetGame() { return mGame; } //Attributes public void SetAttribute<T>(AttributeType attributeType, T …
7 c#  xna 

2
Farseerで非常に特殊な種類のジョイントを作成するにはどうすればよいですか?
編集する 問題は解決しました(Drackirの回答を参照)。これが私がこのジョイントで達成しようとしていたことのデモです。この他の質問のシナリオに関する詳細情報。 問題 Farseerで、次のように動作する非常に特殊なタイプのジョイントを作成しようとしています。 オブジェクトは、X軸とY軸の両方で常にオブジェクト間の距離を同じに保つ必要があります。 移動-オブジェクトの1つとの衝突により、グループ全体が一緒に移動する必要がありますが、グループは回転してはなりません。トルクの結果として、個々のオブジェクトのみが中心の周りを回転できます。 回転-オブジェクトは常に同じ回転でなければなりません。オブジェクトの1つとの衝突により、他のすべてのオブジェクトがまったく同じ量だけ回転するはずです。 ここに写真があります: 箱から出してFarseerでこれを実現する方法がない場合は、それを拡張して、このような動作をする新しいタイプの結合を作成するにはどうすればよいですか?基本的に私はすべてのボディが他のボディの「クローン」のように動作することを望みますが、それらの間のオフセットは固定されています。

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