ご返答ありがとうございます。FPSはチェックしていませんでした;地道にチェックしていくことにします。
記述に無駄が多そうなのは敵機と敵弾の処理の辺りだろうかと思い載せてみました。
<略>
*enemyset
if flame\10=0 {
es_new en,point_1
noteget entype,noteline
entype.en=str(entype) ;notegetで出現パターン読み込み。テキスト中0か空白は待機。notegetは文字型変数で受け取るのでstrで数値に変換。
noteline+=1
if entype.en!0 {
if entype.en=1 :enhp.en=5:chno.en=81 ;chno:キャラクターナンバー
if entype.en=2 :enhp.en=7:chno.en=82 ;発生する敵の種類分岐(今は三択)
if entype.en=3 :enhp.en=1:chno.en=83
if entype.en=1000 :noteline=0 ;読み込み文末は1000
endir.en=0
ex=rnd(370)
es_set en,ex,-enys+15,chno.en,,1
es_type en,4
}
}
gosub *enemymove_hit_shot
<略>
*enemymove_hit_shot
en=0
repeat point_2-point_1
es_find en,4,en,point_2
if en=-1 :break
switch entype.en
case 1
if flame\3=0 :endir.en+=1
es_adir en,endir.en,200
es_get eny,en,5
if eny>=50 :gosub *enshotcase_1
swbreak
case 2
es_adir en,0,400
es_get eny,en,5
if eny>=50 :gosub *enshotcase_2
swbreak
case 3
es_adir en,0,800
es_get eny,en,5
if eny<=200 :gosub *enshotcase_3
swbreak
swend
;hitcheck
;own-enemy
es_check hitown_enemy,1,,,en,en
if hitown_enemy=en {
es_kill en
mmplay 0
}
;ownbullet-enemy
es_check hitownbullet,en,2,,2,point_1
if hitownbullet!-1 {
es_kill hitownbullet
enhp.en-=1
if enhp.en=0 {
es_kill en
mmplay 0
}
}
en+=1
loop
;own-enemybullet
enemybullet=0
repeat
es_find enemybullet,8,enemybullet
if enemybullet=-1 :break
es_check hitenb,1,8,point_3
if hitenb!-1 {
es_kill hitenb
mmplay 0
}
enemybullet+=1
loop
return
*enshotcase_1
if flame\10=0 {
es_new enb,point_2
es_set enb,enx.en+16,eny.en+16,kpl+kob+ken+1+29
es_type enb,8
es_get enx.en,en,3
es_get eny.en,en,5
enbdir.en+=30
es_adir enb,-enbdir.en,200
es_effect enb,32,32,0,0,enbdir.en
}
return
*enshotcase_2
count.en+=1
if count.en=1 :es_get enx.en,en,3:es_get eny.en,en,5
if count.en>=1&count.en<=100 {
es_new enb,point_2
es_set enb,enx.en+16,eny.en+16,kpl+kob+ken+1+15
es_type enb,8
enbdir.en+=20
if enbdir.en>=360 :enbdir.en=0
es_adir enb,enbdir.en,300
es_effect enb,32,32,0,0,enbdir.en
if count.en=100 :count.en=-100
}
return
*enshotcase_3
bulkind=rnd(8)
buldir=rnd(360)
es_new enb,point_2
es_set enb,enx.en+16,eny.en+16,kpl+kob+ken+1+32+bulkind
es_type enb,8
es_get enx.en,en,3
es_get eny.en,en,5
es_adir enb,buldir,200
es_effect enb,32,32,0,0,buldir
return
長たらしくすみません。
*enemysetはメインループ内で以降サブルーチンです。敵機の動きは適当に試作したので変数管理が雑です;
gosubのネスト構造はまずいですかね?;あと気になるのは、敵機をシナリオ(?)通りに発生させるためにnotegetで
テキストファイルから読み込んだ数字でswitch分岐につなげているところです。
なにかアドバイス頂けないでしょうか。よろしくお願いします。