タグ付けされた質問 「2d」

2Dは、座標がX値とY値で表される2次元空間を指します。

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 

2
Time.deltaTimeを使用しているにもかかわらず、動きはフレームレートに依存しているように見える
Unityでゲームオブジェクトを移動するために必要な変換を計算する次のコードがありますLateUpdate。これはで呼び出されます。私が理解していることから、私の使用はTime.deltaTime最終的な翻訳フレームレートを独立させるべきCollisionDetection.Move()です(ただレイキャストを実行することに注意してください)。 public IMovementModel Move(IMovementModel model) { this.model = model; targetSpeed = (model.HorizontalInput + model.VerticalInput) * model.Speed; model.CurrentSpeed = accelerateSpeed(model.CurrentSpeed, targetSpeed, model.Accel); if (model.IsJumping) { model.AmountToMove = new Vector3(model.AmountToMove.x, model.AmountToMove.y); } else if (CollisionDetection.OnGround) { model.AmountToMove = new Vector3(model.AmountToMove.x, 0); } model.FlipAnim = flipAnimation(targetSpeed); // If we're ignoring gravity, then just …

1
2Dタイルマップで「ビジョンコーン」を計算する効率的な方法は?
特定のユニットがタイルマップ上の特定の方向を向いている場合(特定の範囲と向きの角度内)に、どのタイルが「見える」かを計算しようとしています。最も簡単な方法は、一定数のタイルを外側に描画し、各タイルにレイキャストすることです。ただし、もう少し効率的なものを望んでいます。写真は千の言葉を言う: 赤い点はユニット(上向き)です。私の目標は、黄色のタイルを計算することです。緑のブロックは壁です(壁はタイルの間にあり、2つのタイルの間を通過できるかどうかを簡単に確認できます)。青い線は、私が話していた「レイキャスティング」方法のようなものを表していますが、これを行う必要はありません。 編集:ユニットは北/南/東/西(0、90、180、または270度)にのみ向くことができ、FoVは常に90度です。一部の計算を簡素化する必要があります。ある種の再帰的/スタックベース/キューベースのアルゴリズムがあると考えていますが、それを理解することはできません。 ありがとう!
13 2d  algorithm  tilemap 

4
粒子でソフトエッジ領域を実装する方法
私のゲームはPhaserを使用して作成されていますが、質問自体はエンジンに依存しません。 私のゲームにはいくつかの環境があります。基本的に、プレイヤーキャラクターが移動して影響を受けるポリゴンエリアです。たとえば、氷、火、毒など。これらの領域のグラフィック要素は、色で塗りつぶされたポリゴン領域自体と、適切なタイプの粒子(この例では氷の破片)です。これは現在、私がこれを実装している方法です-タイルスプライトをパーティクルパターンで覆うポリゴンマスクで: ハードエッジは悪いように見えます。次の2つのことを実行して改善したいと思います。1.多角形の塗りつぶし領域をソフトエッジにし、背景に溶け込ませます。2.いくつかの破片をポリゴン領域から出させて、それらが中央で切断されず、領域に直線がないようにする 例(モックアップ): ポリゴンをぼかすことで1を達成できると思いますが、2でどうすればいいかわかりません。 これをどのように実装しますか?

2
私の膨大な数の画像のために、またはそれにもかかわらず、スプライトシートを使用する必要がありますか?
2Dゲームを開発していますが、たくさんのスプライトがあります。3Dアニメーションとモデルを使用して2Dにレンダリングし、「フォールアウト」または「ディアブロ」に見えるようにしました。また、手で描くよりも簡単です(笑)。 私はすでにフレームレートを15fpsに削減しなければなりませんでした。これは、フレームをぎこちなくすることなく下げることができる最低のフレームレートでした。しかし、24フレームが非常に滑らかに見えたために悲しかったです。 これを行った理由は2つあります。 1)HDDスペースを削減します。画像が少ないほど、ゲーム全体が小さくなります。 2)RAMの消費を削減します。ロードする画像が少ないほど、RAMの制限を膨らませる問題を回避できる可能性が高くなります。 ただし、HDDスペースとRAMの両方でイメージを圧縮する方法があれば、それを行います。以前にテストしたことがありますが、ほとんどの場合、RGBA8888からRGBA5555に変換しても品質に変化はなく、TexturePackerプログラムでRGBA4444に変換してもほとんど影響を受けません。SFMLは、.PNGイメージのタイプに関係なく、同じ量のメモリを使用するように見えるため、現在これを行いません。異なる方法でロードする方法を調査しましたが、このテーマについては何も見つかりませんでした。 2Dビデオゲームの処理方法について多くの記事を読みました。コンセンサスは圧倒的です。優れたパフォーマンスのために、スプライトをより大きなテクスチャに詰め込みます!そこで、TexturePackerを使用して、小さなスプライトを非常に大きなスプライトシートにパックします。 ただし、キャラクターごとに10〜15のアニメーション、5つの移動方向、およびアニメーションごとに15〜40のフレーム(おそらく平均24)を用意する予定です。15アニメーション、5方向、およびアニメーションあたり平均24フレーム。つまり、1文字あたり1800個の個別フレームです。スプライトシートにパックされている場合、代わりに75個の画像のみです。(アニメーションごと、方向ごとに1つのスプライトシート。15* 5) ゲーム内の1人の巨大なボスキャラクターの場合、スプライトシートを使用できず、一度に1つのイメージを単純に読み込む方法をプログラムする必要があります。パフォーマンスのためにこれを行うことができるかどうかはまだわかりません。 キャラクターについては、すでにスプライトシートにパックしています。1人のキャラクターが歩き回る場合、これはほとんどの場合うまくいくようですが、時々失速します。ただし、そのキャラクターのすべてのテクスチャをプリロードするのではなく、テクスチャをスワップアウトする悪い考えのコードに起因します。 テクスチャをプリロードする場合、スプライトシートには意味があります。各キャラクターに1800個の小さな画像をプリロードするのは悪い考えだと想像するだけです。 ただし、一度に1つずつメモリにストリーミングしたり、メモリからストリーミングしたりするのは非常に高速であるため、一度に1つの画像をメモリに保存するだけで済みます。これは、特定の瞬間に各キャラクターが45 + MBではなく数KBしか消費しないという意味ではないでしょうか? ストリーミングは信じられないほど高速(1秒間にメモリとレンダリングに出入りする15枚の画像)が必要であり、画像は非常に小さいものの、キャラクタースプライトシートをロードすることをお勧めします。代わりにメモリに。しかし、とにかく大きなボスキャラクターのために、単一画像ストリームのようなレンダリングシステムをコーディングする必要があります。 私は実験してきましたが、単純なプロセスではありません。特に、現在グラフィックスを処理していないゲームエンジンの他の部分に取り組んでいるという事実を考えると。

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を使用しています。

3
物理エンジンで同時衝突を処理する最良の方法は何ですか?
ビデオゲームの物理学についてさらに学ぶために、JavaScriptで2D物理エンジンを書いています。リジッドボディの衝突に対して正しく動作しますが、ボディが同時に2つ以上の他のボディと衝突する場合を除きます。 現在、衝突体の各ペア(A、B)について、衝突インパルスに基づいて速度と角速度を変更し、それらが互いに貫通しないように微調整します。ただし、Aを含む他の衝突の衝突検出とインパルス計算は間違っています。 互いに衝突する3つ以上のオブジェクトに対してエンジンを機能させるためにどのようなアプローチを検討できますか?


2
エレベーター付きの家の地図の迷路が解決できることを確認しますか?
私のゲームでは、家の床を横から見ることができ、ヒーローはリフトを取ることができます-リフトは、矢印に応じて、上昇(次のリフトまで)、または下降(次のリフトまで)します示されており、接続されているちょうど2つのリフトのペアが常にあります。主人公が垂直方向に移動できる唯一の方法ですが、水平方向に自由に移動できます。家の地図はランダムな11x5グリッドで、さまざまなアイテムと、左端、右端、時には2つの中央の位置のいずれかに通過できない壁があります。 私の質問:マップが常にランダム化され、常に解決可能であり、ヒーローが最下階の左側から開始して、最上階にある上向きのリフトを介して常にマップから離れることができるようにするにはどうすればよいですか? 価値があるのは、開発にLua言語を使用することです。本当にありがとう!
13 2d  maze 

1
タイルマップの上に複雑な衝突領域を定義するにはどうすればよいですか?
多くの人が推奨しているように、私はTiledマップエディターを使用してゲーム用のマップを作成していますが、特にlibgdxフレームワークはTiledのマップ用のAPIを提供しているので素晴らしいです。 マップエディターで衝突可能なタイルを定義できるかどうかを定義できるため、コード内の衝突に対処できます。しかし、現在、タイルを衝突可能領域と衝突不可能領域に分割する必要がある状況にあります。手動で、2つの領域の境界のポイントとラインを定義し、プログラムでそれを処理できると思います。しかし、それは多くの時間のかかる仕事です。 それで私はたくさんのグーグルでこの物理ボディエディタを見つけました。これは、上記のプロセスを自動化するための素晴らしいツールのようです。ただし、システムは展開された各イメージで動作し、その操作のためにイメージを展開しても動作するかどうかはわかりません。 衝突領域を定義するこのプロセス全体を実行するより良い方法があるのだろうか。どんな提案も大歓迎です。

2
タイルマップのレンダリング中に不均一なタイルをどのように処理しますか?
ここに、私が確信できないタイルマップで何をしたいのかを示します。ご覧のとおり、上部の壁は下部および側面の壁よりもかなり大きくなっています(これは、[Lのように正方形のような奇妙な形状]であるコーナーと、現在のタイルの40x40px )。 また、タイルに使用しているタイルシートを添付して、他のタイルと比較してコーナーとトップがどのように見えるかを示しています。 私が考えているのは、WxHの代わりに幅と高さのタイルを使用すると、同じ配列を使用してそれらを描画できる可能性があるということです?これがどれだけうまく機能するかわかりませんが、異なる値を持つブロックがプレイヤー/ NPCが踏むことができないブロックであった場合、それは問題ではないかもしれませんが、それが実行可能かどうかもわかりません解決。 私が現在どのように処理しているかを見たい場合の私のコード:Map.java(pastebin)(edit:imはそれを処理していない、つまり現在どのように地図を処理しているかを意味する) tl; dr-2D風のタイルマップを取得して、異なるサイズのタイルに変更するにはどうすればよいですか?または私がやろうとしていることを行うより良い方法はありますか?グーグルで探しているメソッドの名前はありますか?
13 2d  java  tiles  maps 

4
スキッドによる車両物理学
トラクションを失う可能性のある車の車両物理学を作成するにはどうすればよいですか?ドライバーが平らな足を持っているように見えるようにしたいので、ガスを押すと、彼らは車を運転して(後)車輪を牽引し、制御が多少難しくなります。また、ドーナツをしたり、角を「ドリフト」できるようになりたいです。 また、「スキッド」がどの程度発生しているかを知る必要があるため、比例した量の煙とタイヤの跡を追加できます。 2D、トップダウンスタイルのカーゲームを想定します。 ありがとう
13 2d  physics 

2
2Dキャラクターを通常の斜面に立てる方法は?
Unity3D(2Dモード)でこのキャラクターを持っています...このようなスロープで、 しかし、私はキャラクターが赤い線に沿って立つことを望んでいます。 Unity3dで作成するにはどうすればよいですか? このセットアップがあります。 私は動きに単純なAddforceを使用しています... z位置の制約を削除すると、ローリングなどの奇妙な動きになります。

5
グローバル座標空間からローカル空間に変換するにはどうすればよいですか?
という名前のエンティティが与えられた場合、EntityAローカル座標空間を定義します。ここで、の位置EntityAは原点、その見出しベクトルはX軸、見出しベクトルの法線はY軸です。 グローバル座標が与えられている場合、EntityAのローカル空間で別のエンティティの位置を見つけるにはどうすればよいですか? 例:EntityAのグローバルポジションは(50,50)であり、それEntityBは(80,90)です。では、のローカル空間EntityBでEntityAの位置は何ですか? 編集:数学で簡単に行ってください。

4
2Dゲームで任意の大きな画像を処理する方法は?
質問 本当に大きな画像(ハードウェアがサポートできるサイズよりも大きい)を使用する2Dゲームがある場合、どうしますか?たぶん、私にはこれまでになかったこの問題に対する興味深い解決策があるかもしれません。 私は基本的に、一種のグラフィックアドベンチャーゲームメーカーに取り組んでいます。私のターゲットオーディエンスは、ゲーム開発(およびプログラミング)の経験がほとんどない人です。このようなアプリケーションで作業している場合、「画像を分割する」ように指示するよりも、内部で問題を処理する方が好みではないでしょうか? 環境 グラフィックカードは、使用できるテクスチャのサイズに一連の制限を課していることはよく知られています。たとえば、XNAを使用する場合、選択するプロファイルに応じて、2048または4096ピクセルの最大テクスチャサイズに制限されます。 通常、2Dゲームではほとんどの場合、小さな個別のピース(タイルや変形したスプライトなど)から構築できるレベルがあるため、それほど問題にはなりません。 しかし、古典的なpoint'n'clickグラフィックアドベンチャーゲーム(Monkey Islandなど)について考えてみてください。グラフィックアドベンチャーゲームの部屋は通常、全体的に設計されており、風景に取り組んでいる画家のように、再現可能なセクションがほとんどまたはまったくありません。または、大規模な事前レンダリングされた背景を使用するFinal Fantasy 7のようなゲーム。 これらの部屋のいくつかはかなり大きくなることがあり、頻繁に3画面以上の幅に広がります。現在、これらの背景を最新の高解像度ゲームのコンテキストで考慮すると、サポートされる最大テクスチャサイズを簡単に超えてしまいます。 これに対する明白な解決策は、背景を要件内に収まる小さなセクションに分割し、それらを並べて描画することです。しかし、あなた(またはあなたのアーティスト)はあなたのテクスチャのすべてを分割する人でなければなりませんか? 高レベルAPIを使用している場合、この状況に対処し、内部で(XNAのコンテンツパイプラインなどの前処理として、または実行時に)テクスチャの分割とアセンブルを行う準備をしてはいけませんか? 編集 XNA実装の観点から、私が考えていたものを以下に示します。 私の2Dエンジンは、Texture2Dの機能の非常に小さなサブセットのみを必要とします。実際にこのインターフェイスに減らすことができます: public interface ITexture { int Height { get; } int Width { get; } void Draw(SpriteBatch spriteBatch, Vector2 position, Rectangle? source, Color color, float rotation, Vector2 origin, Vector2 scale, SpriteEffects effects, float layerDepth); } …
13 xna  c#  2d  graphics  textures 

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