HSP3でつくる3Dゲームの本の中の、自称忍者おじん 対 炎の岩石巨人
のサンプルのメイン(*main)の中に、下記のプログラムを書いて、
2面を作ろうとしたのですが、2面にきりかわった所で、スペースキーを
押すか、↑↓←→キーを押すと、hsp3hg.exeは動作を停止しました。
と表示され、終了してしまいます。1面は、カーソルキーやスペースキーも、
受け付けるのですが、2面からは、きりかわったところで、上記のキーを押すと
終了してしまいます。2面のグラフィックや音楽をかえて、ゲームを継続するには、
どういったプログラムを組めばよいのか、教えてください。
if (sc>=3600)&&(sw1==1){
; 地面モデル作成
;
hgreset
setfont 16,16,16,1 ; フォントサイズ設定
texload "data\\font.bmp" ; フォント登録
addxfile mi,"data\\ufokamae.x" ; 自キャラモデル作成(モーション付き)
addxanim mi,"data\\uforun.x" ; 走るモーションを追加
addxanim mi,"data\\ufodown.x" ; やられモーションを追加
dsloadfname "data\\shot.wav" ; 弾の発射音
dsloadfname "data\\burst.wav",1 ; 弾の炸裂音
dsloadfname "data\\explos.wav",2 ; 爆発音
dsloadfname "data\\down.wav",3 ; 自キャラやられ声
addxfile emi,"data\\kuman12s.x" ; 敵キャラモデル作成(モーション付き)
p1=OBJ_MOVE|OBJ_BORDER ; p1 ← オブジェクト属性値1
p2=p1|OBJ_FLIP ; p2 ← オブジェクト属性値2
p3=p1|OBJ_XFRONT
regobj oi,mi,p2 ; 自キャラオブジェクト作成
setcoli oi,1,8 ; コリジョン設定
texload "data\\ground2s.bmp" ; テクスチャ画像の読込
addmesh mdgr,32,32,0,1024,1024,stat ; プレート(MESH型)モデル登録
; 樹木モデル作成
;
texload "data\\tree2s.bmp" ; テクスチャ画像の読込
addplate mdtr,1,24,24,0,0,255,255,stat ; プレートモデル登録
texload "data\\sky2s.bmp" ; 背景画像を読込み
clstex stat
; 樹木を地面に配置する
;
regobj obgr,mdgr ; 地面オブジェクト作成
randomize
repeat 40
regobj obtr,mdtr,OBJ_TREE ; 樹木オブジェクト作成
x=rnd(32) :z=rnd(32) ; 座標値を乱数で決める
selpos obtr ; 座標セット
objset3 (x-16)*32+16,-12,(z-16)*32+16
loop
; 弾1モデル作成
;
texload "data\\shot1.bmp" ; テクスチャ画像の読込
addplate mdsh1,1,3,2,0,0,127,95,stat ; プレートモデル登録
; 弾2モデル作成
;
texload "data\\shot2.bmp" ; テクスチャ画像の読込
addplate mdsh2,1,8,8,0,0,79,79,stat ; プレートモデル登録
;
; 火花モデル作成
;
texload "data\\burst.bmp" ; 火花テクスチャ読込
addplate mdez,1,16,16,0,0,95,95,stat ; プレートモデル作成
;
newevent ev_brst ; 火花アニメ設定
repeat 8
event_uv ev_brst,0,96*cnt
event_wait ev_brst,2
loop
event_prmset ev_brst,PRMSET_FLAG,0 ; 自分を消去
; 爆発モデル作成
;
texload "data\\explos.bmp" ; 爆発テクスチャ読込
addplate mdex,1,80,80,0,0,79,79,stat ; プレートモデル作成
;
newevent ev_expl ; 爆発アニメ設定
repeat 12
event_uv ev_expl,0,80*cnt
event_wait ev_expl,4
loop
event_prmset ev_expl,PRMSET_FLAG,0 ; 自分を消去
; 敵を配置する
;
emx=12
dim eoi,emx :dim ehp,emx
dim erg,emx
repeat emx :c=cnt
regobj eoi(c),emi,p2 ; 敵オブジェクト作成
setcoli eoi(c),4,2 ; コリジョン設定
setscale eoi(c),2,2,2 ; スケールを2倍に
x=rnd(32) :z=rnd(32) ; 座標値を乱数で決める
setpos eoi(c),(x-16)*32+16,0,(z-16)*32+16 ; 座標セット
ehp(c)=100 ; 敵の耐久力
erg(c)=rnd(256) ; 敵の移動方向
loop
setborder 1024.0,80.0,1024.0 ; オブジェクト有効空間の設定
; カメラ設定
;
cammode CAM_MODE_LOOKAT ; カメラ注視モード
mci "stop data\\stage1.mid";音楽停止
mci "play data\\stage2.mid";音楽演奏
sw1=2
}