ありがとうございます、わざわざお手数をおかけして申し訳ありません…
トゥーンシェーディング、mqoz共に送っていただいたviewerのほうで解決しました!ありがとうございます。
たびたび申し訳ございませんが、ラストの質問です。
hspにて先ほどpmdを動かそうと以下のようなものを組みました。
//変数等の説明
py_obj(sel_py) pmdのモデルハンドル
cnt フレーム番号指定
todouble() floatをdoubleに変換する関数
//DxLib.as
#func global MV1SetFrameUserLocalMatrix "dx_MV1SetFrameUserLocalMatrix" int,int,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float
//フレームのリセット
MV1ResetFrameUserLocalMatrix py_obj(sel_py) , cnt
//ワールド座標を取得
MV1GetFramePositionD getposd , py_obj(sel_py) , cnt
x_tmp = getposd(0)
y_tmp = getposd(1)
z_tmp = getposd(2)
//床と10.0~-0.3の範囲で判定させ、当たった場合にはendpos(vector構造体の代用)に結果が代入するように
x_tmp_s = x_tmp
y_tmp_s = y_tmp+10.0
z_tmp_s = z_tmp
x_tmp_e = x_tmp
y_tmp_e = y_tmp-0.3
z_tmp_e = z_tmp
startpos = vget( x_tmp_s , y_tmp_s , z_tmp_s )
endpos = vget( x_tmp_e , y_tmp_e , z_tmp_e )
MV1CollCheck_Line HitPoly , mapobj , 0 , startpos(0),startpos(1),startpos(2) ,endpos(0),endpos(1),endpos(2)
if HitPoly(0)=1 {
endpos = vget( todouble(HitPoly(1))-x_tmp , todouble(HitPoly(2))-y_tmp , todouble(HitPoly(3))-z_tmp )
}
//移動行列の取得
MGetTranslate am , endpos(0) , endpos(1) , endpos(2)
//適用(ここで変に)
MV1SetFrameUserLocalMatrix py_obj(sel_py) , cnt , am(0,0),am(0,1),am(0,2),am(0,3),am(1,0),am(1,1),am(1,2),am(1,3),am(2,0),am(2,1),am(2,2),am(2,3),am(3,0),am(3,1),am(3,2),am(3,3)
MV1SetFrameUserLocalMatrixを実行した段階で、フレームが数千倍に拡大されたかのように拡大してしまいました。
モデルの不備か、はたまた代入する行列の不備か見当つかずな状態です