ユーザーブロマガは2021年10月7日(予定)をもちましてサービスを終了します

自称中級者のMinecraft日記 Eclipseで艦これMOD(仮)に挑戦 ブロックの追加4 外を削る当たり判定
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

自称中級者のMinecraft日記 Eclipseで艦これMOD(仮)に挑戦 ブロックの追加4 外を削る当たり判定

2016-10-29 21:17
    <目 次>
    開発環境の構築編
    最初に書くメインクラスの基本形
    防具の追加1 登録用Armorクラス
    アイテムの追加1 アイテムの登録まで
    クリエイティブタブの追加

    ブロックの追加1 ブロックの登録まで
    ブロックの追加2 リソースの追加
    ブロックの追加3 中をくり抜く当たり判定
    ブロックの追加4 外を削る当たり判定
    ブロックの追加5 向きのあるFacingブロック
    LetterTrayDecoration の移植
    ブロックの追加6 当たり判定に向きをつける
    装飾ブロックを幾つか

    レシピの追加1 作業台を使うクラフト
    MODのリリーステストの準備
    鉱石ブロック1 アイテムをドロップするブロック
    鎮守府MOD の配布はじめました
    ――――――――――――――――――――――――――――――――――――――――
    前回は中をくり貫くパターンでしたので、今回は外側を削るパターンをやります。

    ブロックとしてのモデルの編集

    BlockOilDrum というブロックを追加するのですが、モデルはこんな感じに 14×16×14 の直方体にします。16×16×16だと”ブロックぽさ”が強過ぎたので、直方体にしようと思っている次第です。



    ワールドで描画させると、こうなります。
    黒い線で表示されている当たり判定は、まだ 16×16×16 の状態です。


    当たり判定の編集

    そこで、当たり判定の外側を削って、当たり判定も 14×16×14 の直方体にします。
    外側を削って直方体にする当たり判定は簡単で、これだけのコードで処理できます。


    黒い線がテクスチャのある部分まで下がって、モデルと当たり判定が一致しました。

    しかし、削った部分の底で、描画の省略が発生しています。

    隣接ブロックが持つ cullface に対処するコードを追加

    これは、下の草ブロックで生じている現象で、バニラの草ブロックが使っているモデルである cube.json に書かれた cullface に沿った処理です。

    cullface というのは、Specifies whether a face does not need to be rendered when there is a block touching it in the specified position. と説明されています。要は、軽量化のための描画省略で、ブロックが隣接して置かれた時、プレイヤーから見えなくなる接触面を描画しないという処理をしています。

    cube.json の方は変更のしようがないため、BlockOilDrum に、「このブロックは立方体ではない」という処理をさせるコードを追加します。


    BlockOilDrum を「立方体ではない=接触面に隙間が有る」とすることで、隣接する草ブロックが描画の省略をしなくなる訳です。


    (つづく)
    広告
    コメントを書く
    コメントをするには、
    ログインして下さい。