アーカイブ
カテゴリー
- linux (7)
- mc-server-list (1)
- programming (3)
- ReefServer (111)
- ReefServer-Docs (20)
- ReefServer-Gatya (8)
- ReefServer-GuideLine (1)
- ReefServer-Docs (20)
- 未分類 (7)
AxisAlignedBBご存知ですか?
Githubのpmmpリポジトリには含まれてないので知らないという方もいると思います
どこにあるのかというとmathリポジトリにVector3などと一緒にあります
このリポジトリの名前からして分かりますが頭がこんがらがる計算を代わりにやってくれるものでAxisAlignedBBは指定した範囲を計算するのに特化しています
土地関連のプラグインを作成予定の人必須です
使い方はこちら
クラスを作成するときに端っこ(一番小さい場所と大きい場所)の座標を渡す必要があります
どっちが一番小さいもしくは大きいのかわからない時があるので複数のVector3を比較して一番小さい座標もしくは大きい座標を組み合わせてくれるものが用意されているので使うと便利です
コンストラクタ
$max = Vector3::maxComponents($vector3_1, $vector3_2);
$min = Vector3::minComponents($vector3_1, $vector3_2);
$aabb = new AxisAlignedBB($min->x,$min->y,$min->z,$max->x,$max->y,$max->z);
渡した数値がプラスだと一番大きい座標がさらに広がります
マイナスだと一番小さい座標がさらに小さくなります
なのでプラスマイナスどっちの数値を入れても範囲が広がります
addCoord
min (1,1,1)
max (100,100,100)
$aabb->addCoord(1, 0, -2);
min (1,1,-1)
max (101,100,100)
addCoordの 一番大きい座標と一番小さい座標を同時にいじってついでに気も利かせてくれた版
プラスだと範囲が広くなってマイナスだと狭くなります
expand
min (1,1,1)
max (100,100,100)
$aabb->expand(1, 0, -2);
min (0,1,3)
max (101,100,98)
expandの気を利かせてくれない版
どんな数値を入力しても範囲の大きさは変わりません
大きさはそのままで座標だけ移動します
offset
min (1,1,1)
max (100,100,100)
$aabb-offset(1, 0, -2);
min (2,1,-1)
max (101,100,98)
expandの真逆版
プラスだと範囲が狭くなってマイナスだと広くなります
contract
min (1,1,1)
max (100,100,100)
$aabb->contract(1, 0, -2);
min (2,1,-1)
max (99,100,102)
プラスを渡すと指定した方角に範囲が広くなってマイナスを渡すと指定した方角に狭くなります
方角はこの中から選んでください
どっちが北でどっちが東か分かんない人にとってはどうでもいい
extend
min (1,1,1)
max (100,100,100)
$aabb->extend(Facing::UP, 1);
min (1,1,1)
max (100,101,100)
min (1,1,1)
max (100,100,100)
$aabb->extend(Facing::DOWN, 1);
min (1,0,1)
max (100,100,100)
min (1,1,1)
max (100,100,100)
$aabb->extend(Axis::X, 1);
min (0,1,1)
max (99,101,100)
範囲を変更するものが思ってたより多いので使い方は別のページで
誤算でした
One thought on “PMMPにあるAxisAlignedBBの使い方”