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

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

2
XNA 4.0でアルファ透明度を適切に行う方法
さて、これに関するいくつかの記事、チュートリアル、質問を読みました。ほとんどは、私の問題を解決しない同じテクニックを指します。半透明のスプライト(texture2Dの本当に)を作成し、それらを別のスプライトにオーバーレイする機能が必要です。 私が見つけたコードサンプルでそれをいくらか達成することはできますが、結果に満足しておらず、これを行う方法があることを知っています。モバイルプログラミング(BREW)では、私たちは古いやり方で、レンダリングの前に各ピクセルの透明度を実際にチェックしました。 この場合、その下のスプライトをその上のアルファとブレンドしてレンダリングするようです。これは、テクスチャをどのようにレンダリングするかによるアーティファクトかもしれませんが、前述したように、すべての例はこの1つのテクニックを指し示しています。先に進む前に、サンプルコードを貼り付けます。 public void Draw(SpriteBatch batch, Camera camera, float alpha) { int tileMapWidth = Width; int tileMapHeight = Height; batch.Begin(SpriteSortMode.Texture, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.Default, RasterizerState.CullNone, null, camera.TransformMatrix); for (int x = 0; x < tileMapWidth; x++) { for (int y = 0; y < tileMapHeight; y++) { int tileIndex = …
14 xna  2d  c#  rendering  transparency 

1
滑らかなボクセル地形
個人的なプロジェクトとして、私はCastle Storyの滑らかな地形のような地形を作成する地形ジェネレーターを作成しようとしています。 あなたがそれを見たことがないなら、ここに: ご覧のとおり、ブロックと「スムーズ」ブロックの組み合わせです。 この外観をエミュレートするために私が試みたのは、各サーフェスブロックにミニハイトマップを与えることです。これは通常は機能しますが、いくつかの問題があり、次のような地形が生じます。 問題は、各ブロックが1x1x1であるが、特定の場所の高さがマイナスまたは> 1である場合があることです。その場合、クリップして、高さを0または1に設定します。 私が意味することをよりよく説明するために、図を示します。 高さを生成するために、基本的に次のことを行います。 genColumn(int x, int z) { int highestBlockY = (int)noise2d(x, z); bool is_surface = true; for(int y = max_height - 1; y >= 0; y--) { Block b; if(is_surface) { b = Block.Grass; b.HasHeightMap = true; // generate heightmap for(int ix = …

4
より高速な2D衝突検出
最近、ペースの速い2Dシューティングゲームに取り組んでいますが、大きな問題に遭遇しました。衝突検出。確かに、動作していますが、非常に遅いです。私の目標は、画面上に多くの敵を配置し、お互いに触れないようにすることです。すべての敵がプレイヤーエンティティを追いかけています。それらのほとんどは同じ速度を持っているので、遅かれ早かれ、プレイヤーを追いかけている間にすべて同じスペースを取ることになります。プレイヤーにとっては、1人の敵だけに追われているように見えるので、これは本当に楽しい要素を減らします。彼らが同じスペースを取るのを防ぐために、衝突検出(非常に基本的な2D検出、私が知っている唯一の方法)を追加しました。 Enemy class update method Loop through all enemies (continue; if the loop points at this object) If enemy object intersects with this object Push enemy object away from this enemy object これは正常に機能します。敵のエンティティが200未満である限り。300〜350の敵エンティティに近づくと、フレームレートが大幅に低下し始めます。最初にレンダリングが悪いと思ったので、描画呼び出しを削除しました。これはまったく役に立ちませんでしたので、もちろん、それが更新方法であることに気付きました。更新方法の唯一の重い部分は、この各敵ループから全敵の部分です。300人の敵に近づくと、ゲームは90000(300x300)ステップのイタレーションを行います。私の〜 私はこの衝突検出にアプローチする別の方法があるに違いないと確信しています。方法はわかりませんが。私が見つけたページは、2つのオブジェクト間の衝突を実際に行う方法、またはオブジェクトとタイル間の衝突をチェックする方法に関するものです。私はすでにこれらの2つのことを知っています。 tl; dr?エンティティのロット間の衝突検出をどのようにアプローチしますか? クイック編集:助けになる場合は、C#XNAを使用しています。

2
XNAで効果パラメーターを設定するためのベストプラクティス
EffectXNAでパラメーターを設定するためのベストプラクティスがあるかどうかを確認したいと思います。または、言い換えると、を呼び出すと正確に何が起こるのかpass.Apply()。複数のシナリオを想像できます。 Apply呼び出されるたびに、すべてのエフェクトパラメーターがGPUに転送されるため、パラメーターを設定する頻度に実際の影響はありません。 Apply呼び出されるたびに、リセットされたパラメーターのみが転送されます。したがって、新しい値を実際に設定しないSet-operationsのキャッシュは避けてください。 Apply呼び出されるたびに、変更されたパラメーターのみが転送されます。したがって、セット操作のキャッシングは役に立たない。 言及された方法のいずれもゲームのパフォーマンスに顕著な影響を与えないため、この質問全体はブートレスです。 最後の質問です。次のような集合演算のキャッシュを実装することは有用ですか? private Matrix _world; public Matrix World { get{ return _world; } set { if (value == world) return; _effect.Parameters["xWorld"].SetValue(value); _world = value; } } 期待してありがとう。
13 xna  directx  effect 

3
偏った保守的なランダムウォーク
とのどちらかとして保存されたスプライトがVelocityありPositionますVector2。各Updateサイクルで、速度が位置に追加されます。 スプライトに3番目のベクトルを与えたいと思いTargetます。新しいターゲットは、どの反復でも指定できます。スプライトが本質的にランダムウォークパターンで移動するようにしたいのですが、2つのパラメーターを公開する必要があります。 典型的なランダムウォークは、任意の距離までの距離を増加または減少させる可能性がありますTarget(さらに、接線方向の動きのわずかな可能性)。私はランダムウォークにバイアスをかけることができなければなりませんが、それでもランダムではありますが、スプライトが「決定する」方向がより近くなるようにする必要がありますTarget。 ランダムウォークは「スムーズ」である必要があります。スプライトの方向が急激に変わることはありません。これは、プレイヤーにとって「ちらつき」または「震え」のように見えるためです。平均化するとゆっくりと近づきながら、ランダムに移動しながら、このように、または徐々に変化します。 これを行うための良い、簡単な方法は何ですか?可能であれば、答えをVector2 RandomWalk(Vector2 target)メソッドとして提供します。 NextGaussian(mean, stdev)役立つ方法があれば、すでに利用可能なメソッドがあります。

7
XNAで六角形のタイルマップピッキングを実装するにはどうすればよいですか?
六角形がクリックされたときに確認する必要がある六角形のタイルマップがあります。六角形は実際には接触しておらず、それぞれの間にわずかな隙間があります。 全体を複雑にすることなく、六角形がクリックされたかどうかを確認する方法を知っている人はいますか?
13 c#  xna  hexagonal-grid 

4
Minecraftスタイルのゲームでオクルージョンを使用してボクセルベースの照明を実装するにはどうすればよいですか?
C#とXNAを使用しています。私の現在の照明のアルゴリズムは、再帰的な方法です。ただし、5秒ごとに1つの8x128x8チャンクが計算されるほど高価です。 暗闇の可変シャドウを作成する他の照明方法はありますか? または、再帰的な方法は良いですか、おそらく私はそれを間違っていますか? 再帰的なものは基本的に高価なようです(チャンクごとに約25kブロックを通過させる)。レイトレーシングに似た方法を使用することを考えていましたが、これがどのように機能するかわかりません。私が試した別のことは、リストに光源を保存し、各ブロックが各光源までの距離を取得し、それを使用して正しいレベルに照明することでしたが、照明は壁を通り抜けます。 私の現在の再帰コードは以下です。これは、太陽光とトーチライトをクリアして再度追加した後、チャンク内の光レベルがゼロでない任意の場所から呼び出されます。 world.get___atこのチャンクの外部のブロックを取得できる関数です(これはチャンククラスの内部にあります)。Locationは、のような独自の構造ですがVector3、浮動小数点値の代わりに整数を使用します。light[,,]チャンクのライトマップです。 private void recursiveLight(int x, int y, int z, byte lightLevel) { Location loc = new Location(x + chunkx * 8, y, z + chunky * 8); if (world.getBlockAt(loc).BlockData.isSolid) return; lightLevel--; if (world.getLightAt(loc) >= lightLevel || lightLevel <= 0) return; if (y < 0 || …


3
外部ライブラリを使用せずにXNAで美しい小さなテキストを取得するにはどうすればよいですか?
XNAでは、スプライトフォント技術は恐ろしいものです。Nuclexの方がはるかに優れていますが、外部からの参照は必要ありません。また、ゲームはほぼ完成しました。 SansationやQuicksandなどのフォントを使用する場合、フォントのサイズが小さいとひどく見えます。それはとても悪いです! これに対する既知の回避策はありますか?フォントサイズを非常に高く設定し、スプライトバッチでそれらを不運に縮小しようとしました。
13 xna  fonts 

3
XNAがゲームエンジンと見なされないのはなぜですか?
ゲームエンジンと見なされるXNAが欠落しているのは疑問です。ゲームエンジンが行うべきすべてのことを行います(物理部分を除く)。また、ゲームエンジンに関するWikipediaの記事で定義されているすべての側面をサポートしています。 XNAがゲームエンジンと見なされないのはなぜですか?
13 xna 

6
XNAでマウス入力を処理する方法は?
XNAでカードゲームを開発しています。 OnClickXNAにオブジェクトのイベントはありますか? プレイヤーがカードをクリックしたときにカードを動かそうとしています。このプロジェクトには、カードを描画するSpriteクラスがありますが、OnClickイベントなどを使用する方法がわからないため、少し立ち往生しています。
13 xna  c#  input  mouse 

1
XNAは、ゲームにフォーカスがないときにマウスクリックをキャプチャします。
Altキーを押しながらゲームウィンドウの外で操作を行っても、ゲームはマウスクリック(左クリックと右クリックの両方)をキャプチャします。 ゲームは、クリックを「消費」しません。これは、クリックがフォーカスを持つアプリケーションにも送信されるためです。 しかし、インターネットブラウザをクリックするたびに銃声を聞くのはかなり面倒です... また、ゲームがフルスクリーンに設定されている場合でも、問題が発生します。
13 xna 

2
WP7が電話でクラッシュする原因となる曲を再生するが、エミュレーターではクラッシュしない
XNA 4.0を介してWindows Phone 7で再生を開始し、継続的にループするゲームに曲を実装しようとしています。エミュレーターでは、これは正常に機能しますが、電話に展開すると、ホーム画面に戻る前に黒い画面が表示されるだけです。問題の不正なコードは次のとおりです。このコードをコメント化すると、電話でアプリが正常に実行されます。 // in the constructor fields private Song song; // in the LoadContent() method song = Content.Load<Song>("song"); // in the Update() method if (MediaPlayer.GameHasControl && MediaPlayer.State != MediaState.Playing) { MediaPlayer.Play(song); } 曲ファイル自体は、長さが2:53の2.28mb .wmaファイルで、ビットレートは106kbpsです。 繰り返しますが、これはエミュレーターでは完全に機能しますが、電話ではまったく動作しません。あなたが提供できる助けをありがとう!

1
XNAで特定のリソースのみを破棄しますか?
XNA 4.0のContentManagerには、すべてのアセットをアンロードするUnload()メソッドが1つしかありません。 常にロードされるいくつかの「グローバル」アセットが必要ですが、レベルが変更されたときにアンロードされるレベルごとのアセットが必要です。 Level.csクラスの一部としてContentManagerの2番目のインスタンスを作成する必要がありますか?または、Game.Contentを使用してから、読み込むアセットで.Disposeを呼び出す必要がありますか?または、ここで概説したように、ReadAsset関数の上に独自のContentManagerを作成する必要がありますか?
13 xna  xna-4.0 

1
C#/ XNAゲームプロジェクトの単体テスト
私はプログラミングを始めてからゲーム開発に挑戦してきましたが、決して真剣にはなりませんでした。私はビジネスアプリ開発者として働いていますが、暇なときにいくつかのゲームに取り組んでいます。 (Microsft web-devスタック上の)ビジネスの世界では、ASP.NET MVCは、インターフェイスの動作方法の単体テストが容易なため、非常に人気が高まっています。 すべてのゲームロジックを簡単に単体テストできるゲームを作成するために、どのデザインパターン(MVC、MVP、MVVMなど)を使用できるのか疑問に思っています。これは可能ですか?時間を無駄にしていますか?完全なビルドを行ってから、単体テストの代わりに「統合」タイプのテストを実行する方が良いでしょうか? サンプルコードは素晴らしいものですが、説明も役立ちます。 (ユニットテストタグを追加しようとしましたが、必要な担当者がいません...)

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