始めまして、私はHGIMG3で3Dシューティングを製作している者です。
弾を発射するところまでは上手くいったのですが、IFを使って、
例えば弾のx座標が○を超えた時、弾のオブジェクトを消滅させ
るようなスクリプトを組んでみたのですが、その座標を超えたと
思われた瞬間、エラーが発生してしまいました。壁との当たり判定
は実装させたいので、どうにかしたいのですが、上手い方法が見つ
かりません。もし下のスクリプトで何かおかしい所があれば、教えてください。
どうかお願いします。
#include "hgimg3.as"
pi=atan(1,0)*2 ;π
fullscr=1 ; スルスクリーンか? (1=yes/0=no)
_dispx=640:_dispy=480 ; 画面サイズ
;
randomize
if fullscr=0 {
screen 0,_dispx,_dispy,0
} else {
bgscr 0,_dispx,_dispy,0
hgsetreq SYSREQ_DXMODE,1 ; フルスクリーンモードを指定
hgsetreq SYSREQ_DXWIDTH,_dispx ; フルスクリーン解像度X
hgsetreq SYSREQ_DXHEIGHT,_dispy ; フルスクリーン解像度Y
}
cls 4
hgini
setfont 16,16,12,1
texload dir_exe+"\\sample\\hgimg3\\fontchr.bmp"
setuv 0,0,122,127
addxfile xobj,"juu.x"
modelorder xobj,0
modelshade xobj,0
addxfile m_xmodel,"tikaro.x" ; モデルを読み込む
getpos HGOBJ_CAMERA,cpx,cpy,cpz
regobj obj, m_xmodel
clscolor $4040
addpos HGOBJ_CAMERA,5,-1.1,-50
setuv 0,0,256,256
addspr pchr,1 ; プレイヤーキャラ
regobj mychr,pchr
texload "asd.bmp" ; テクスチャの登録
setpos mychr, 196,120
mouse 280, 200
*main
hgdraw
stick key,$3ff
getkey p1,87
getkey p2,83
getkey p3,65
getkey p4,68
getkey p5,1
if key&128 {end}
addcy=double(280-mousex)*0.002
addcx=double(200-mousey)*0.002
getang HGOBJ_CAMERA,cx,cy,cz
selang juu:objgetfv jan
if cx>=1.2 {
setang HGOBJ_CAMERA,1.19,cy,cz;現在のカメラアングルにマウスによる回転量を加算
}else{
addang HGOBJ_CAMERA,addcx,addcy,addcz
}
if cx<=-1.2 {
setang HGOBJ_CAMERA,-1.19,cy,cz;現在のカメラアングルにマウスによる回転量を加算
}else{
addang HGOBJ_CAMERA,addcx,addcy,addcz
}
mouse 280,200
si=sin(cy)
co=cos(cy)
si1=si*0.2
co1=co*0.2
if p1=1 : addpos HGOBJ_CAMERA,-si1,0,-co1
if p2=1 : addpos HGOBJ_CAMERA,si1,0,co1
cy2=cy+1.57
si=sin(cy2)
co=cos(cy2)
si1=si*0.2
co1=co*0.2
if p3=1 {addpos HGOBJ_CAMERA,-si1,0,-co1}
if p4=1 {addpos HGOBJ_CAMERA,si1,0,co1}
t=t-(t>0)
if (p5=1)&(t=0){ //マウスが左クリックされたら発砲
t=6
regobj tama,xobj,OBJ_MOVE
getang HGOBJ_CAMERA,cx,cy,cz
getpos HGOBJ_CAMERA,cpx,cpy,cpz
setpos tama,cpx,cpy,cpz
setang tama,cx,cy,cz
sincx =sin(cx)
ccx = cos(cx)
sincx2=sincx*(-1)
ccy= cos(cy)
ccy2=ccy*(-1)*ccx
scy= sin(cy)
scy2=scy*(-1)*ccx
seldir tama:objset3 scy2*2,sincx2*2,ccy2*2
addang HGOBJ_CAMERA,0.015,0.01*(1-rnd(3)),0
}
getpos tama,tpx,tpy,tpz //弾の座標を所得
if tpx>20:delobj tama //弾のx座標が20以上になったら、弾を消滅させる
hgsync 10
goto *main