はいわかりましたこの時点で分かりました
#include "hgimg3.as"
screen 0,640,480,0
cls 4
Player_id=1024 //自分のキャラID
NormalBox_id=1 //地形のキャラID
mapx_max=25 //地形X軸のボックス数
mapy_max=10 //地形Y軸のボックス数
mapz_max=25 //地形Z軸のボックス数
boxsize=10.0 //箱のサイズ
offset_px=-boxsize*mapx_max/2 //表示座標オフセット(マップデータの中央がワールド座標X=0,Y=0,Z=0になるように)
offset_py=-boxsize*mapy_max/2
offset_pz=-boxsize*mapz_max/2
hgsetreq SYSREQ_MAXOBJ ,3000 //オブジェクト最大数
hgini
texload dir_exe+"\\sample\\hgimg3\\btex.bmp" ; テクスチャの登録
tex_id=stat
texload dir_exe+"\\sample\\hgimg3\\btex.bmp" ; テクスチャの登録
boxtexA_id=stat
; BOXオブジェクトを登録
addbox my_mdid,boxsize,boxsize,tex_id ; 自分用BOXモデルを作成
modelcols my_mdid,boxsize,boxsize,boxsize //判定サイズ設定
addbox b_mdid,boxsize,boxsize,boxtexA_id ;地形用BOXモデルを作成
modelcols b_mdid,boxsize,boxsize,boxsize
dim map,mapx_max,mapy_max,mapz_max //マップデータ用3次元配列 map(X,Y,Z)
//縦中間層に地形用キャラIDを代入
repeat mapx_max
bx=cnt
repeat mapz_max
map(bx,mapy_max/2,cnt)=NormalBox_id //とりあえず地面を敷詰める
loop
loop
//適当にボックスを配置
repeat 50
map(rnd(mapx_max),mapy_max/2-1-rnd(3),mapz_max/2-rnd(mapz_max/2))=NormalBox_id
loop
map(mapx_max/2,mapy_max/2-1,mapz_max/2)=Player_id //マップ中央の地面の上に自分のキャラIDを代入
mygroup=1
enegroup=2
//マップデ−タを見ながらオブジェクト配置
repeat mapy_max
by=cnt
repeat mapx_max
bx=cnt
repeat mapz_max
map_f= map(bx,by,cnt)
if map_f {//何かのキャラが設定されてる
if map_f=Player_id {//自分のオブジェクトを配置
regobj my_chr,my_mdid ; BOXモデルをオブジェクトとして登録
setpos my_chr,offset_px+boxsize*bx,offset_py+boxsize*by,offset_pz+boxsize*cnt
setcoli my_chr,mygroup,enegroup //コリジェングループを設定
}
if map_f=NormalBox_id {//地形を配置
regobj box_obj,b_mdid ; BOXモデルをオブジェクトとして登録
setpos box_obj,offset_px+boxsize*bx,offset_py+boxsize*by,offset_pz+boxsize*cnt
setcoli box_obj,enegroup,mygroup
}
}
loop
loop
loop
//カメラ初期角度
cam_rx=-0.3
cam_ry=0.0
cam_rz=0.0
jump_f=0
jump_spd=0.0
*main
; 描画メイン
;
stick k,$fff
if k&128 : goto *owari ; [ESC]で終了
if k&512 {//マウス右ドラッグでカメラ回転
if mouse_Rmov=0 {//前回はドラックされてなかった
mouse_Rmov=1 //ドラッグ開始フラグセット
}else{//ドラッグ中なので前回のマウス座標から今回を引いてカメラ角度に加算
cam_rx-=0.01*(mousey-mousey_Rstart)
cam_ry-=0.01*(mousex-mousex_Rstart)
}
mousex_Rstart=mousex//今回のマウス座標を保存
mousey_Rstart=mousey
}else{
mouse_Rmov=0//ドラッグキャンセル
}
if k&16 {//スペース
if jump_f=0 {//地面なのでジャンプセット
jump_spd=-0.5 //セット
jump_f=1 //空中フラグセット
}
}
if jump_f=1 {//空中なのでジャンプ速度を現在の座標に加算
addpos my_chr,0,jump_spd,0
jump_spd+0.02 //上昇初速を落下方向に加算
}
getkey A_key,'A'
getkey W_key,'W'
getkey D_key,'D'
getkey S_key,'S'
if A_key { addpos my_chr,-0.1,0,0}
if D_key { addpos my_chr,0.1,0,0}
if W_key { addpos my_chr,0,0,-0.1}
if S_key { addpos my_chr,0.0,0,0.1}
getpos my_chr,my_px,my_py,my_pz //自分の座標取得
getcoli val,my_chr,1.0 //地形との判定
if val>=0 {//地形に当ってる
jump_f=0
jump_spd=0.0
getpos val,gx,gy,gz //当ったボックスの座標
my_py=gy-boxsize //ボックスの上に乗せる座標
setpos my_chr, my_px,my_py,my_pz //自分の座標を説定
}else{//空中
jump_f=1
}
setang HGOBJ_CAMERA,cam_rx,cam_ry,cam_rz //カメラ角度設定
fvset cam_fv,cam_rx,-cam_ry,cam_rz //カメラ角度を計算用配列に代入(Y回転は逆になるので-)
fvdir cam_fv,0,-5,30 //カメラ角度に自分からのローカル座標を回転
setpos HGOBJ_CAMERA,my_px+cam_fv(0),my_py+cam_fv(1),my_pz+cam_fv(2) ; 自分の座標に回転させた座標を加算してカメラ座標に設定
hgdraw ; 描画処理
color 255
hgline 310,240,330,240
hgline 320,230,320,250
hgsync 10 ; 時間待ち
goto *main
*owari
end
texload dir_exe+"\\sample\\hgimg3\\btex.bmp"
; テクスチャの登録
tex_id=stat
texload dir_exe+"\\sample\\hgimg3\\btex.bmp"
; テクスチャの登録
boxtexA_id=stat
この場所でした
はいすみませんでした
迷惑をお掛けいたしました
ちょっとテクスチャをつくってみました
マイクラ感がすごく感じられるようになりました