マインクラフト上で、ブロックが地面と接続されているかをチェックする仕組みを作りたいのですが、
適用できる既存のアルゴリズムか、数学的な考え方があれば教えていただけますでしょうか。
マインクラフト上でというのは、ゲーム内のレッドストーンブロックでやるのではなく、サーバープラグインを作ってやるつもるなので、
サーバーAPIを利用できます。
例えば下記のように
- ある座標xyzの隣接するブロックの種類(ブロックの場合もあり、空気の場合もある)をチェック
- ユーザーが設置/破壊したブロックの座標や種類を取得
などなど割と自由な操作が可能です。
あるブロックのまとまりが宙に浮いてしまっていることを検知できるようにするのが目的です。
■ < 浮いてる ■■ ■ < 浮いてる ■■ ----------- 地面
「地面」の定義は何でしょう. 土ブロックや草ブロックが「地面」なのでしょうか.
今回の場合は、y座標64にあるブロックが地面と定義して問題ありません!
なるほど.
では「あるブロックのまとまりが宙に浮いてしまっていることを検知」というのは, 極端かと思いますが例えばエンドは大小さまざまな島が奈落の上に浮いています. あれも全て「浮いている」判定となる感じでしょうか.
そういうことになりますね・・・
ただ最初から浮いている状態のワールドは想定していなくて、ユーザーが積み上げたり壊したりして、結果的に浮いてしまったブロックを検知する、というようなものを想定しております。
縦に100ブロック積んで、一番したのブロックを破壊したら、↑の99ブロックが浮いてしまったmとかですね。このようにy方向だけの検知ならなんとなくできると思うのですが、これが±x,±y,±z方向もチェックする必要があるので、効率的な検知方法があれば・・・との考えです。
おそらく, 地面(Y64) と「壊したブロックの周囲の非空気ブロック(?)」との(非空気ブロック経由の)経路を探す問題…のような感じかと思いますが, 私も空中に線路を1000ブロック以上引いたりしていますが, これが接地されているかを調べるのに効率的な方法があるようには...
すいません.
いえいえ、一緒に考えていただけただけでありがたいです!
ありがとうございました!
回答1件
あなたの回答
tips
プレビュー