問題タブ [isometric]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
webgl - WebGL等角投影
ここで大丈夫です。WebGLを実行していて、アイソメキューブを作成しようとしています。Three.jsは使いたくない。まず、コードで何が問題になっているのかを理解したいと思います。私は調査してきましたが、私が見つけることができる唯一のチュートリアルはOpenGL用のようです
とにかく-これが私のdrawScene関数です:
レンダリング機能は
かなり歩行者。私はそれを使って立方体を描きます。とにかく、OpenGLの例では、パースペクティブ関数が廃止されているように見えますが、ここで省略した場合、シーンは空白になります。lookAt関数が正しく機能していることはわかっているので、パースペクティブマトリックスを使用して何かを行う必要があります。少し助けていただければ幸いです。ありがとうございました!
2d - オブジェクトを回転させてアイソメ ゲームの世界を描く
オブジェクトが回転していない等角投影世界の描画は非常に簡単で、ここで説明されています。
簡単な方法は、すべてのオブジェクトの地面衝突長方形を取得し、その中心 (スクリーン プライマリの垂直座標) で並べ替えることです。
しかし、状況によっては、たとえばゲームの機関車やフェンスなど、画面上に斜めのオブジェクトがあり、回転する可能性があります。 オブジェクト AB とオブジェクト C の地面衝突形状
オブジェクト C がなければ、非常に単純です。最初にオブジェクト B (高いので) を描画し、その後に A を描画します。
C を念頭に置いて、最初にオブジェクト A、次にオブジェクト B、最後に C を描画する必要があります (この場合は正反対の順序です)。
しかし、正しい並べ替え演算子 (または他の並べ替え方法) を定義するには、画像/オブジェクトが正しく描画されるようにするにはどうすればよいでしょうか?
java - ひし形のタイルを使用したゲームでマウスの位置を変換する背後にある数学は何ですか?
私は、軸測(等角ですが、角度のあるビュー)タイルベースのゲームを開発しています。
タイルシステムは正常に機能しています。次に、入力の問題に移ります。
タイルは、その背後にあるロジック(配列)と視覚的に一致していません(整列されていない/オフセットされたひし形)。
私が「google-fu」で見つけた多くの方法の中で、入力に変換(「回転」)を適用することは、(コード量的に)実装が簡単で、パフォーマンス的にも優れているようです。
問題は、私が見つけたすべての情報源について、どの数字がどこから来ているのか、また数式がそれらに対して何をしているのかを実際に把握できないことです。
それで、「アフィン変換」の数式の説明をお願いします(これが名前の場合、よくわからないので...)
この質問に対する@Yochai_Timmerの答えは私が使いたいものですが、値がどこから来ているのか(ほとんど*)、またそれらに何が行われているのかわかりません。
[ほとんど*]:「28」はタイルの半分の幅と全高、「14」は半分の高さ、「56」は全幅です...おそらく...しかし、それは私がそれから得たほとんどすべてです、正しいかどうかにかかわらず、とにかく私はまだ立ち往生しています。
より明確な答えが得られる場合は、私自身のタイルはに80 width
よる46 height
ものであり、同じ方法でそれらを適用(レンダリング)しています(タイルの右上隅がタイル1x2y
の中央にある1x1y
など)。 。)
また、私が使用しているのはJavaで、APIはSlick2Dです。したがって、数式の計算に役立つ隠し関数/クラス(例:、、Math.sen()
... Math.cos()
)、または一般的な問題を知っている場合は、それらも指摘してください。非常に役立つ可能性があります。
actionscript-3 - 大きなオブジェクトでのアイソメトリック深度ソートの問題
私は現在 as3 アイソメトリック ゲームを構築していますが、深さの並べ替えに多くの問題があります。解決策を探しましたが、問題 (長方形のオブジェクト) に一致するものは見つかりませんでした。
これが私のゲームのスクリーンショットです:
ご覧のとおり、深さの並べ替えは、1x1 のタイル オブジェクト間でうまく機能します。私は単純にそれらの x 座標と y 座標 (アイソメ マップに相対的) を使用してそれらを並べ替えます。
問題は、2x2、1x4、4x1 などの大きなオブジェクトがある場合に発生します。
深度ソートをどのように処理すればよいでしょうか?
javascript - アイソメ タイルマップの Z 軸
JavaScript と HTML5 Canvas で Isometric Tile Map を試しています。タイル マップ データを JavaScript 2D 配列に格納しています。
そして描く
ただし、この関数は、すべてのタイルの Z 軸がゼロに等しいことを意味します。
mapData[0][0]
おそらく、 Z 軸が 3 に等しいなどのアイデアと方法を知っている人がいるかもしれません。mapData[5][5]
Z 軸は 5 に等しい。?
私には考えがあります:Grass、Dirtの関数を書き、この関数を2D Arrayに保存して、後で描画しmapData[0][0].setZ(3);
ます。しかし、タイルごとに関数を書くのは良い考えですか?
3d - 等尺性タイル ゲームで壁を実装および設計する最良の方法は何ですか?
このソリューションをどこに適用するかを考えているゲームは、タイルを変更できるゲーム、一種のエディターです。西向きと東向き、または北/西の 2 種類の壁のグラフィックを作成する必要があります。
等尺性タイル ゲームで壁を作成するには、次の 2 つの方法があるようです。
- それらをタイルの少し外側に描きます (The Sims 1、Theme Hospital、Jagged Alliance 2、Project Zomboid)
- それらを 1x1(タイル) のサイズにして、独自のタイルに描画します (ウルティマ 8、すべてのルージュライク)。
作図例
2 番目の方法が最も簡単な方法のようです。壁がタイル全体を占めているため、床タイルとの重なりや、その周りのパターンの設計を気にする必要はありません。ただし、グリッドとは異なるサイズのパターンを作成する場合は、別の問題が発生します。かなりスリムな壁が必要な場合のように。グリッドも大きくする必要があります。プラス面では、必要な壁ピースは 1 つだけです。
最初のアプローチでは、壁からの変化を検出して描画するためのコードが必要であり、床タイルがその周りに設計されていない限り、少し奇妙に見えるかもしれません。また、最低4個必要です。
これを行うにはどの方法が好まれますか、またその理由は何ですか?
javascript - HTML5 Canvas Isometric マップ深度ソート
アイソメトリックに問題があります。この「問題」の名前はわかりませんが、取得するものと取得する必要があるものをいくつか示します。
私のコードは今次のようなものを描いています:
しかし、私はこのようなものを描く必要があります: http://3.bp.blogspot.com/_rqhF_8E1nlA/R59epfmoRFI/AAAAAAAAAGw/cE_o-A0bvm0/s400/lore3.png
「デプスソート」って聞いたけど何?自分のコードにどのように適用でき、どこでこれを学ぶことができますか?
actionscript-3 - As3Iso: セカンダリ ディスプレイ リストを使用する理由
as3iso を移植して抽象表示リストで使用していますが、作成者が二次表示リスト (ノード階層) を使用することにした理由がわかりません。表示オブジェクトの子配列を取得できることを除けば、これの必要性は考えられません。for(i in 0...numChildren) getChildAt vs children 配列を取得するのは、本当に大きなパフォーマンス ヒットですか? これは、オーバーライド中に子配列を維持することによって軽減することもできます。
その他の唯一の理由は、flash.display.DisplayObject の一部のプロパティが最終的なものであり、x と y を isoX/isoY に関連付けたいと考えているためですが、worldX/worldY はこれに適した API です。
セカンダリ ディスプレイ リストに問題はありませんが、要点を理解できず、DisplayObject から iso ディスプレイ オブジェクトを拡張する方向に傾いています。
また、画面上または scrollRect の外側にないオブジェクトを visible=false とマークすることは、Flash では不要であり、レンダラー レベルで処理する必要があるため、一般的なレンダリングでは必要ないと思いましたか? これはフラッシュ ソフトウェア レンダラーに当てはまりますか?
javascript - 「simcity」のようなアイソメトリック ゲーム用の JS/HTML5 ゲーム エンジン
ブラウザと Facebook を対象としたゲームのような「simcity」のプロジェクトをジャンプスタートするには、ゲーム エンジン/ライブラリを選択する必要があります。これまでのところ、有望に見える 2 つのエンジンを見つけました (例ではレンダリング アーティファクトは発生しません)。
http://www.isogenicengine.com/ (有料) http://libcanvas.github.com/ (オープン ソース ベータ版)
アイソメトリック ゲーム (ターン ベース) 用のこれらのエンジンまたは他のエンジンを使用すると、誰でも有効期限が切れます。または、車輪を再発明する必要があります:)
前もって感謝します!