「モデル全体を 包み込むバウンディング球」
ということであるなら、目的のgpbモデルを包み込む球体のgpbモデルを作り、それに物理設定して、
その球体の移動する座標を目的のgpbモデルにセットしてやればいいはず(高さのみ手直し)、と思い
ましたが、やはりこれでも不自然でした。
過去ログを探すと、[ NO.84965 / 通りすがり さん ] に
「透明なダミーの箱モデルを作って DUCKモデルに座標をコピーでは?」
とありました。これですね。
箱モデルは、包み込む大きさにする必要はなく、画面に表示したときの大きさでいえば、むしろ
目的のgpbモデルよりずっと小さいほうがいいみたいです。箱モデルが傾いたときの床との距離の
違いを気にすることがほとんどなくなるからです。ただ、落下する高さに注意が要るよるようで、
たぶん、通りすがり さんがおっしゃるように、落下速度とか加速度とかそういうのと関係するようで、
あまりに小さくしすぎると、床を突き抜けてしまいます。(感覚的には、大きいほうが重くて突き
抜けそうですが)その辺の関係はわかりませんけれど、プログラムに組み込んで、そのプログラム
にあった大きさにすれば、とりあえずどうにかなりそうです。
以下、サンプルです。[ sample / hgimg4 ]フォルダ にコピーして実行してみて下さい。
#include "hgimg4.as"
gpreset
setcls CLSMODE_SOLID, $404040
setpos GPOBJ_CAMERA, 100, 1, 10 ; カメラ設定
gplookat GPOBJ_CAMERA, 0, 0, 0
gpfloor id_floor, 80.0, 80.0, 0x999999 ; 床設定
setang id_floor, 0.2, 0.0, 0.0
gppbind id_floor, 0.0, 1.0 ; 床物理設定
box_xy=2
model_x=0.0 : model_y=50.0 : model_z=0.0
gpload id_model,"res/tamane2" ; 珠音モデル読み込み
setscale id_model, 0.03,0.03,0.03
setpos id_model, model_x, model_y, model_z
gpact id_model
gpbox id1, box_xy, 0xff0000 ; 箱モデル設定
setpos id1, 0.0, 1.0, 0.0
setpos id1, model_x, model_y+box_xy/2, model_z
gppbind id1, 1.0, 0.1 ; 箱モデル物理設定
// setalpha id1, 0 ; 箱モデルを透明に
*main
// gplookat GPOBJ_CAMERA, copy_x, copy_y, copy_z ; 箱モデルを注視点に
redraw 0
; 物理設定した [箱モデル] の座標を [珠音モデル] にコピー
getpos id1, copy_x, copy_y, copy_z
setpos id_model, copy_x, copy_y-box_xy/2, copy_z
; Y軸の回転のみ コピーしてみた
getang id1, ang_x, ang_y, ang_z
// setang id_model, ang_x, ang_y, ang_z
setang id_model, 0, ang_y, 0
gpdraw
redraw 1
await 1000/60
goto *main
ほぼ、通りすがり さんの パクリになったみたいで、すいません。
前に上げたスレへお答え頂いた砂時 計 さん、および、通りすがり さん、ありがとうございます。
解決といたします。