調査したところgppbindにてGPPBIND_MESH(モデルを反映)してクローン元のモデルが
奈落落ちした状態(Y軸がマイナス)にてクローンすると発生します。
その場合のクローン先は元のモデルの座標のままとなります。ちなみに箱ノードの場合には
発生しません。
HGIMG4始めたばかりなので学習不足かもしれませんがこの現象は、正しい動作なのでしょうか?
またこれが仕様なのであれば、回避策としての正しいセット方法とかありますでしょうか?
(落ちないように元モデルをどこかに表示しておくとか?)
■確認用スクリプト(test11_duck)
res素材が必要なので、コピーするかhsp37beta\sample\hgimg4直下にて動作確認して下さい。
クリックにてモデルを投下します。
元モデルが奈落に落ちると投下位置が更新されなくなります。
箱ノードで試す場合には#define MODEL_DUCKをコメント化して下さい。
;ベーススクリプト:sample\hgimg4\test11.hsp #include "hgimg4.as" title "HGIMG4 Test" randomize:gpreset setcls CLSMODE_SOLID, $808080 setpos GPOBJ_CAMERA, 0,2,10 gplookat GPOBJ_CAMERA, 0,0.3,0 #define MODEL_DUCK ;箱ノードとアヒルの切り替え #ifndef MODEL_DUCK gptexmat id_texmat, "res/qbox.png" gpbox id_box, 1.5, -1, id_texmat setpos id_box, 0, 3, 0 gppbind id_box, 1, 0.5 #else gpload id_box,"res/duck" setpos id_box, 0, 3, 0 gppbind id_box, 1, 0.5,GPPBIND_MESH #endif gpfloor id_floor, 5,5, $404040 gppbind id_floor, 0 *main stick key,15:if key&128 : end if key&$110 { gpclone i, id_box x=0.02*rnd(20)-0.2:z=0.02*rnd(20)-0.2 setpos i, x, 3, z #ifndef MODEL_DUCK gppbind i, 1, 0.5 #else gppbind i, 1, 0.5,GPPBIND_MESH #endif } redraw 0:gpdraw color 255,255,255 pos 8,8:mes "HGIMG4 sample" getpos id_box,x,y,z:fall="地面":if y<-0.5:fall="**奈落**" mes strf("getpos %i,%3.1f,%3.1f,%3.1f[%s]",id_box,x,y,z,fall) getpos i,x,y,z mes strf("getpos %i,%3.1f,%3.1f,%3.1f",i,x,y,z) redraw 1:await 33 goto *main