この一部のプログラムの進みかたがわかんなくなってしまいました。
gosub *MoveChara
gosub *MoveCamera
gosub *chkconf
と
returnのところです。
いったいどうやって進んでいるのか疑問に思って質問しました。
通常は↑から↓に続いて順々に進んでいます。
このプログラムの場合
gosub *MoveChara リターン gosub次の文に戻ると思うんですが、
そのgosub *MoveCharaの下の文プログラムは進まず、そしてエラーに
なるんじゃないんでしょうか?
そこのあたりがわかんないので教えていただきたいです。
*実行
//keybuf変数はメインループの外で
//dim,keybuf,256として、
//確保しておいてください。
E3DGetKeyboardCnt keybuf
if keybuf( VK_ESCAPE ) !=0 : goto *終了
gosub *MoveChara
gosub *MoveCamera
E3DBeginScene scid1
E3DChkInView scid1,hsid0
E3DChkInView scid1,hsid1
gosub *chkconf
//不透明部分を描画する
E3DRender scid1, hsid0, 0
E3DRender scid1, hsid1, 0
//半透明部分の描画をする
E3DRender scid1, hsid0, 1,0,0,0,0,1
E3DRender scid1, hsid1, 1,0,0,0,0,1
E3DEndScene
E3DPresent scid1
E3DWaitbyFPS 60, chkfps1
await 0
goto *実行
*終了
end
*MoveChara
eventno = 0
if keybuf( VK_UP ) != 0 : E3DPosForward hsid1, 100.0 : eventno = 1;矢印↑
if keybuf( VK_DOWN ) != 0 : E3DPosForward hsid1, -100.0 : eventno = 1;矢印↑
if keybuf( VK_LEFT ) != 0 : E3DRotateY hsid1, -50.0 : eventno = 1;矢印←
if keybuf( VK_LEFT ) != 0 : E3DRotateY hsid1, 50.0 : eventno = 1;矢印→
E3DSetNewPoseByMOA hsid1, eventno
return
*ChkConf
E3DChkConfGround hsid0, hsid0, 1, 200, -100, result0, adjustx0, adjusty0, adjustz0, nx0, ny0, nz0
if ( result0 !=0 ) : E3DSetPos hsid1, adjustx0,adjusty0,adjustz0
return
*MoveCamera
E3DGetPos hsid1, saveposx1, saveposy1, saveposz1
E3DPosForward hsid1, -2500.0
E3DGetPos hsid1, backposx, backposy, backposz
E3DSetPos hsid1, saveposx1, saveposy1, saveposz1
E3DSetCameraPos backposx + -4000, backposy + 2000.0, backposz
E3DSetCameraTarget saveposx1, saveposy1 + 800.0, saveposz1, 0.0, 1.0, 0.0
return