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

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


7
2D Platformer AABBの衝突問題
AABBの衝突解決に問題があります。 最初にX軸を解決し、次にY軸を解決して、AABB交差を解決します。これは、このバグを防ぐために行われます:http : //i.stack.imgur.com/NLg4j.png 現在のメソッドは、オブジェクトがプレーヤーに移動し、プレーヤーを水平方向に押す必要がある場合に正常に機能します。.gifでわかるように、水平スパイクはプレーヤーを正しく押します。 ただし、垂直スパイクがプレーヤーに移動しても、X軸が最初に解決されます。これにより、「スパイクをリフトとして使用する」ことができなくなります。 プレーヤーが垂直スパイクに移動すると(重力の影響を受けて落下します)、最初はX軸にオーバーラップがなかったため、Y軸に押し込まれます。 私が試したのは、このリンクの最初の回答で説明した方法でした:2D長方形オブジェクト衝突検出 ただし、スパイクと移動オブジェクトは、速度ではなく位置を変更することで移動します。Update()メソッドが呼び出されるまで、次の予測位置を計算しません。言うまでもなく、このソリューションも機能しませんでした。:( 上記の両方のケースが意図したとおりに機能するように、AABBの衝突を解決する必要があります。 これは私の現在の衝突ソースコードです:http : //pastebin.com/MiCi3nA1 このバグは最初からずっとエンジンに存在していたので、誰かがこれを調べることができれば本当に感謝しています。これは真剣に衝突コードを見て夜を過ごし、「楽しい部分」に到達してゲームロジックをコーディングするのを妨げています:( XNA AppHubプラットフォーマーデモと同じ衝突システムを実装しようとしました(ほとんどのものをコピーアンドペーストします)。ただし、私のゲームでは「ジャンプ」バグが発生しますが、AppHubデモでは発生しません。[ジャンプバグ:http : //i.stack.imgur.com/NLg4j.png ] ジャンプするには、プレーヤーが「onGround」であるかどうかを確認し、Velocity.Yに-5を追加します。 プレーヤーのVelocity.XはVelocity.Yよりも高いため(図の4番目のパネルを参照)、onGroundは本来あるべきではないときにtrueに設定され、プレーヤーを空中でジャンプさせます。 プレーヤーのVelocity.XがVelocity.Yよりも高くなることはないので、AppHubデモではこれは起こらないと思いますが、間違っている可能性があります。 これを解決する前に、まずX軸で解決し、次にY軸で解決しました。しかし、それは私が上で述べたようにスパイクとの衝突を台無しにします。

3
より大きな領域を作成するために使用される3x3タイルセットの用語は何ですか?
それ自体のより大きな領域を作成するために使用できる3x3タイルセット(通常はタイル化された2Dゲーム)を使用するパターン/デザイン名は何ですか。たとえば、次のとおりです。 (画像ソース) 私はそれが「9ツリー」またはそのようなものだと思ったが、それを見つけることができない、それはおそらく珍しい参照です。
49 2d  tiles  terminology 

8
ベジェに沿って2つの惑星間で船を移動し、加速のためのいくつかの方程式が欠落している
OK、私はすでにmath.stackechange.comでこれを投稿しましたが、答えは得られませんでした:( 最初にここに私の問題の写真があり、その後に説明が続きます。 だから私はすべてのポイントと値を設定しました。 船は左の惑星を動き回るからスタートP1してS=0.27 Degrees、それが到達したときに、gametickごとにPoint Aそれが達するまで、ベジェ曲線を次開始しPoint D、それは右の惑星の周りを移動P2してS=0.42 Degreesゲームチックあたり。の違いはS、惑星の周りを同じ移動速度で移動することです。 これまでのところ、これで問題は解決しました。 ときS P1とS P2あまりに異なり、それはそれの目的地に到達したとき、船はかなり悪い見えた、2つの速度の間でジャンプします。だから私は間の船を加速する必要があるPoint AとPoint DのS P1へS P2。 私が不足しているものは紫色で、それらは次のとおりです。 ティックを計算する方法は、加速度を考慮して船がベジェに沿って移動するのに必要です。 また、Tに基づいてベジェ曲線上の位置を見つける方法で、再び加速を考慮します。 ATM N点間の距離を計算することにより、ベジェの長さを計算します。だから私は何だと思い、私が必要とする、拡張するための方法であるT加速度に応じて私のベジェ計算に入れるために私の必要性を。
48 2d  mathematics 

4
2D粒子を流体としてレンダリングする方法は?
流体(水のような)をシミュレートするために、2Dパーティクルを移動する良い方法があるとします。レンダリング方法に関するアイデアはありますか? これは、このように視点が横から見られる2Dゲーム用です。水は、落下して他のオブジェクトと相互作用するために壊れる可能性のあるボックスに含まれます。私の頭に浮かぶ最も簡単な方法は、各粒子に小さな画像を使用することです。水をレンダリングするより多くの方法を聞くことに興味があります。
45 2d  particles  water 

6
OpenGLは2Dゲームに適していますか?
私はしばらくの間OpenGLライブラリを自分で教えてきましたが、ゲームを作り始めたいです。ただし、簡単に紹介するために、トップダウンポケモンスタイルのゲームなど、2Dのものから始めたいと思います。 これは良い計画ですか、それともOpenGLは3D専用に作られていますか?
44 opengl  2d 

8
2Dアニメーションを学習する方法は?[閉まっている]
単純な2Dアニメーションをうまく行う方法はどこで学べますか それとも、本当に文字通りフォトショップで何かのすべてのフレームを描くのですか?ヒントやコツはありますか?始めるのに役立つチュートリアル? また、どのソフトウェアオプションがありますか(できればオープンソースまたは無料のソフトウェア)。
43 2d  animation 

6
2Dプラットフォーマーで異なるアスペクト比をどのように処理しますか?
昔、PCで見られるアスペクト比は4:3だけでした。現在、最も一般的なのは16:10ですが、ほとんどの新しいモニター(特にラップトップ)は16:9です。 私は2Dプラットフォーマーを書いていますが、すべての異なる比率をどのように処理するかを決定できません。 ここにいくつかのアイデアがあります: 4:3はより多くのコンテンツを取得し、ワイドスクリーンは上下にカットされます 16:9はより多くのコンテンツを取得し、他のコンテンツは左右にカットされます ゲームは16:9で、他のARの黒い水平バーがあります ゲームは4:3で、他のARの黒い垂直バーがあります
41 2d  aspect-ratio 

5
プレーヤーが色品質を損なうことなく画像を「染色」できるようにする最良の方法は?
2.5Dアイソメ(2D画像)ゲームを作成しています。 プレイヤーが鎧や衣服などを「染める」ことができるようにしたいのです。私は、すべてをグレースケール化すると、より「自然な」カラーリングのいくつかを失うことにつながります。たとえば、赤/黄色のグレースケールでドラゴンを作成してからオーバーレイカラーを適用すると、二次色がすべて失われた純粋に赤いドラゴンになります。その間、同じ赤/黄色のドラゴンブルーが死ぬと、見た目は青/白になります。 私のゲームのキャラクターには、多種多様な装備がありません。このゲームは、League of Legendsがキャラクターとグラフィックスを処理する方法に近いものです。単一のタイプのキャラクター(例:ヒーロー)が存在する場合がありますが、オプションとしてキャラクターの複数の衣装があります。プレイヤーは、限られた数の「衣装」とキャラクターで可能な限り多くのカスタマイズを行えるようにしたいと思います。 ですから、プレイヤーがキャラクターを選択し、いくつかの武器の1つを選択し、少数の衣装の選択肢(キャラクターの上に重ねて)を交互に切り替えて、ほとんどすべてを染色できるようにします(武器の特定のメタリックカラーを選択し、任意の色を選択します)衣料品のために)。 着色を失わずにグレースケールを使用できるようになれば、私はそうします。 ここに私が話していることの例があります: Photoshopの「カラーオーバーレイ」オプションで何を使用しても、ドラゴンを「染色」することはできません。明らかに、グレースケールを使用してより適切に色付けできる場合、私は間違っています。緑や黄色、明るい紫などの色の場合、これで問題ありません。他の色については、芸術を破壊します。 ただし、グレースケールを行わずに、元の(赤/黄色)画像に「HUE」色を単純に適用すると、見栄えがよくなります。 赤い色合い 紫の色合い これで、プレイヤーはドラゴンを任意の色に染めることができます。(黄色は白に変わり、赤は虹の色に変わります。) これは、ホワイトまたはブラックが最適なセカンダリカラーであることを意味しますか?次に、何らかの方法またはシェーダーを使用して、白い(セカンダリ)色を別の色に変更しますか? 単一の画像を撮影し、着色に基づいて異なるピクセルを染色するこの複雑な方法に関する記事はありますか? ドラゴンにとって、それは白/黒の高コントラストドラゴンとして最もよく機能するでしょうか?レッド/イエローは最高のカラーセットですか?私が試した他のいくつかの色よりも、画像の方がはるかに優れています。グレースケールはまだ優れていますか? Photoshopの「ブレンドオプション」には、ビデオゲームの画像を適切に「染色」する方法が含まれていませんか?より良い成功を達成できる複雑なシェーダー/方法はありますか? 注:GrayScaleを使用して画像のRAM消費量を削減したり、非可逆圧縮中の品質の低下を防ぐことができる場合、それは私が真剣に検討するものです。

5
ゲームの俳優は自分自身を描く責任がありますか?
私はゲーム開発は初めてですが、プログラミングは初めてです。 私は(再び)JavaScriptのcanvas要素を使用してPongタイプのゲームで遊んでいます。 Paddle次のプロパティを持つオブジェクトを作成しました... width height x y colour 次のPongようなプロパティを持つオブジェクトもあります... width height backgroundColour draw()。 draw()現在、メソッドはをリセットしてcanvasおり、そこで問題が発生しました。 必要があるPaddleオブジェクトが持つdraw()その描画方法は責任、または必要があるdraw()のPongオブジェクトがその役者を描くための責任がある(私が間違ってる場合、私はそれが正しい用語であると仮定し、私を修正してください)。 私はのためにそれがadvantagousだろうと考え出しPaddle自体を描画するために、私は2つのオブジェクトをインスタンス化するように、PlayerとEnemy。それはでなかった場合Pongのdraw()、私は二度同様のコードを記述する必要があると思います。 ここでのベストプラクティスは何ですか? ありがとう。

6
2Dゲームの大きなビデオメモリ要件をどのように解決しますか?
2Dゲームの大きなビデオメモリ要件をどのように解決しますか? Allegro C / C ++で2Dゲーム(Factorio)を開発していますが、ゲームコンテンツの増加に伴い、ビデオメモリ要件が増加するという問題に直面しています。 現在、最初に使用される画像に関するすべての情報を収集し、これらの画像を可能な限りすべてトリミングして、可能な限り緊密に大きなアトラスに整理します。これらのアトラスはビデオメモリに保存され、そのサイズはシステムの制限に依存します。現在、通常は最大8192x8192の2つの画像であるため、256Mb〜512Mbのビデオメモリが必要です。 このシステムは、カスタム最適化とレンダリングスレッドと更新スレッドの分割により、60 fpsで何万枚もの画像を画面に描画できるため、非常に有効です。画面には多くのオブジェクトがあり、大きなズームアウトを許可することが重要な要件です。さらに追加したいので、ビデオメモリの要件に問題が発生するため、このシステムは保持できません。 私たちが試したかったことの1つは、最も一般的な画像を含む1つのアトラスと、キャッシュとしての2つ目のアトラスを持つことです。画像は、必要に応じてメモリビットマップからそこに移動されます。このアプローチには2つの問題があります。 allegroでは、メモリビットマップからビデオビットマップへの描画が非常に遅くなります。 allegroのメインスレッド以外でビデオビットマップを操作することはできないため、実際には使用できません。 追加の要件は次のとおりです。 ゲームは決定論的である必要があるため、パフォーマンスの問題や読み込み時間によってゲームの状態が変わることはありません。 ゲームはリアルタイムであり、すぐにマルチプレイヤーにもなります。どんなコストでも最小のスタッターでさえ避ける必要があります。 ゲームのほとんどは、1つの連続したオープンワールドです。 このテストは、1x1から300x300までのサイズのバッチで、構成ごとに数回、10,000個のスプライトを描画することで構成されていました。Nvidia Geforce GTX 760でテストを行いました。 ソースビットマップが個々のビットマップ(アトラスバリアント)間で変更されていない場合、ビデオビットマップからビデオビットマップへの描画はスプライトごとに0.1usかかりました。サイズは関係ありませんでした ビデオビットマップからビデオビットマップへの描画、ソースビットマップの描画間での切り替え(非アトラスバリアント)は、スプライトごとに0.56usかかりました。サイズも関係ありませんでした。 メモリビットマップからビデオビットマップの描画は本当に疑わしいものでした。1x1から200x200のサイズはビットマップあたり0.3usかかったので、それほどひどく遅くはありません。サイズが大きくなると、201x201の9usから291x291の3116usへと、劇的に時間の増加が始まりました。 アトラスを使用すると、パフォーマンスが5倍に向上します。レンダリングに10ミリ秒かかっていた場合、アトラスを使用すると、フレームあたり100,000スプライトに制限され、それなしでは、20000スプライトの制限があります。これには問題があります。 また、シャドウのビットマップ圧縮と1bppビットマップ形式をテストする方法を探していましたが、Allegroでこれを行う方法を見つけることができませんでした。

7
より良いアートを作成するための学習(2Dゲーム)
私のゲームの1つが「大きく」なるか、金塊があふれるまで、自分のゲームアートのほとんどまたはすべてを処理する必要があります。私の質問の核心は、「プログラマーアート」を超えて、私が実際に誇りに思う何かに到達するのに十分なアートをどのように学ぶことができるかということです。 私の質問の焦点は3Dではなく2Dです。 私はすでに良いグリップを持っています: Photoshop / GIMP(画像の操作と作成) フラッシュ(アニメーションおよびシンプルアートの描画) 簡単な描画(手で) 手描きアートのデジタル化 グラフィックデザイン ただし、ゲームには複雑で多様なアートが必要です。背景からアイコン、スプライト、アニメーション、複雑な効果まで何でも。 芸術的にギャップを埋めるにはどうすればよいですか?私はそれができるという経験と自信をすでに持っています。私は自分のささやかな努力をする方向を知る必要があるだけです。特に長期的には、これが報われることを知っています。しかし、私はそこに着く方法がわかりません。 既存のアートを使用することは、私がすでに行っていることですので、質問でそれを取り上げないでください。
40 2d  art 

6
高速移動オブジェクトの六角形衝突検出?
オブジェクトには位置と速度ベクトルがあります。通常、2つのオブジェクトが衝突するかどうかを確認するために位置のみが使用されます。これは、最初の衝突チェックで最初のオブジェクトの前にあり、その後ろで2番目の衝突チェック。 また、ラインベースの衝突チェックもあります。このチェックでは、各オブジェクトの移動ベクトルが他のオブジェクトの境界ボックスと交差するかどうかのみをチェックします。これは、ポイントの拡張として見ることができます。ただし、高速で移動するオブジェクトが本当に小さい場合にのみ機能します。 だから、私のアイデアは、ポイントを拡大するのではなく、なぜ長方形を拡大しないのですか?これにより、六角形になります。 今、これまでのところとても良い。しかし、この種の2つの六角形が交差するかどうかを実際に確認するにはどうすればよいですか?これらは非常に特殊な六角形であることに注意してください。 ボーナス質問:衝突が発生した場所を正確に(または、ある程度の時間後に)計算することは可能ですか?これは、実際に何がどこで、どのくらいのパワーで発生したかを検出し、衝突からフレームの終わりまでの時間での動きをシミュレートするのに非常に便利です。

1
XNAでSVGアートを直接レンダリングする
SVGなどのベクトル化された形式の2Dアートがたくさんあるとします。完全なSVGレンダラーを自分で実装することなく、それを直接レンダリングする簡単な方法はありますか? もちろん、さまざまな解像度/ズームレベルに合わせてオフラインで(たとえば、コンテンツパイプラインで)ラスタライズできますが、ベクターグラフィックスが提供する連続ズームレベルで鮮明なビジュアルを維持したいと思います。
36 xna  2d  graphics  art  vector-art 

2
不規則な形状のヘルスバーを手続き的にレンダリングするにはどうすればよいですか?
従来の長方形または心臓ベースのヘルスバーの問題は、十分に理解されており、簡単に解決できます。しかし、以下で作成したモックアップのように、より「創造的に形作られた」ヘルスバーに受け入れられるソリューションは何ですか? これを行う明白な方法は、「中間の」スプライトを使用することです。したがって、3番目の画像は、さまざまなレベルの健康のための他の多くのトランジションとともに、独自のスプライトになります。しかし、それは実に洗練されていないようであり、健康状態間のスムーズな移行を作成するために必要な中間者の数は多くなります。 私が思いつく他の唯一のアイデアは、「空の健康」スプライトの上に「完全な健康」スプライトをオーバーレイし、健康の各目盛りを表すピクセル座標のセットをプリベイクし、健康として不透明または透明にすることです上下します。 この質問は言語やプラットフォームにとらわれないことを意図していますが、回答に役立つ場合は、任意の言語/ライブラリ/フレームワークで具体的なサンプルを提供してください。
35 2d  graphics 

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