質問

JavaでMinecraftの2Dリメイクを作成しています。 YouTubeのOrange451は、これを試してみるようになりました。マップ上にすべてのブロックがテキストファイルから読み込まれており、ゲームがロードされると、すべてのブロックがテキストファイルからアレイリストに追加されます。ゲーム内でカーソルがオンになっているブロックのインデックスを計算するためのアルゴリズムを作成し、クリックしたときにブロックをエアブロックに置き換える(基本的にブロックを破壊する)マウスリステナーを追加しました。 ArrayListのブロックを置き換えるために、ArrayList Set(Index、OBJ)メソッドを使用しました。理論的には、正しく機能するはずであり、ある意味では機能します。唯一の問題は、数ブロック先にマップに黒いスペースを作成することです。特に私がこれまで来たので、これは非常にイライラします。追加情報:アレイリスト内のオブジェクトを置き換えるメソッド、または衝突検出方法ではアレイリストも使用してブロック位置を検出するため、より良い方法が必要です。私を助けてください!画像を投稿することはできませんが、ブロックを空気のテクスチャに設定しますが、その近くの黒い正方形(アレイリストmabeyのギャップ?)を作成します。投稿するにはあまりにも多くのコードがあるため、プロジェクト全体のソースコードが表示されます。 BlockWorld 2Dソース

役に立ちましたか?

解決

この2D構造を表すための非常識な方法であることを知っているオブジェクトのアレイリストは、これに苦労しています。それは順序付けられていません - あなたはあなたのアレイリストを逆転またはシャッフルすることができ、それは同じものをペイントするでしょう。 o(n)アップデートがあります。配置を交換する前に、適切な座標のオブジェクトをアレイリストに検索する必要があるためです。同じ座標を持つ複数のオブジェクトを持つことができます。目に見える座標に対応するオブジェクトがまったくない状態である可能性があります。これは、ここで遭遇したものです。

私を助けてください

わかった。 BYTEの2次元配列(配列、アレイリストではなく)から始めます。これにより、256種類のブロックが可能になり、メモリを常に割り当てることなくプレイヤーが掘ることができます new AirBlock(0, 0) 狂気。世界を描くには、可視座標を反復し、バイトをビットマップなどにマップします。

また、2D Minecraftがすでに存在しています。それはテラリアと呼ばれています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top