- ベストアンサー
HSPあたり判定が反応悪い!困っています
- 現在「HSP」で作成中のSTG(シューテングゲーム)において、当たり判定がうまく動作しません。困っています。
- HSPで作成中のSTGにおいて、当たり判定の反応が悪くて困っています。解決方法を教えてください。
- HSPのSTG作成中に当たり判定が上手くいかず、困っています。どうすれば解決できるでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
上の続きのプログラムです (別アカ) ------------------------------------ ;**************自機の移動******************************* *自機の移動 stick key,15 ;キー取得 if (key & 1) : myx -= mySpd ;←の移動スピード if (key & 2) : myy -= mySpd ;↑の移動スピード if (key & 4) : myx += mySpd ;→の移動スピード if (key & 8) : myy += mySpd ;↓の移動スピード return ;****************敵機の処理***************************** *敵機の処理 TKTK +=1 if TKTK >= 300 : TK_STOP = 1 if TK_STOP = 0{ repeat TKMAX ;敵の最大数(7) if TK_KAN >= 210 { if enemy.cnt = 0{ enemy.cnt = 1 ;フラグ emx.cnt = 350 : emy.cnt = 0 TK_KAN == 0 } }else{ TK_KAN += 1 ;カウンター }loop } ;敵の移動 repeat TKMAX ;敵の最大数(7) if enemy.cnt = 1 : emy.cnt += 1 ;左に移動 if TK_KAN >= 210 { if emy.cnt >= 300{ emx.cnt -= 1 : emy.cnt -= 1 } } ;ストップ if TK_KAN >= 210 { if emx.cnt <= 10 : emx.cnt += 1 }loop return ;****************自機の←弾****************************** *自機の←弾 getkey key,90 ;キーチェック,Zキー repeat MYTMMAX ;自機弾の最大数(7) if(key)&(mytm.cnt = 0)&(TM_CO(0) = TM_WAIT(0)){ ;連射間隔(10) mytm.cnt = 1 mytmx.cnt = myx - 10 : mytmy.cnt = myy - 16 ;自機弾の座標 TM_CO(0) = 0 ;自機弾のカウンター } if mytm.cnt = 1 : mytmy.cnt -= TM_SPD(0) ;自機弾のスピード(5) if mytmy.cnt<-16 : mytm.cnt = 0 loop if TM_CO(0) < TM_WAIT(0) : TM_CO(0)++ return;自機弾のカウンター < 連射間隔(10) : 自機弾のカウンター ;****************自機の→弾****************************** *自機の→弾 getkey key,90 ;キーチェック,Zキー repeat MYTMMAX ;自機弾の最大数(7) if(key)&(mytm2.cnt = 0)&(TM_CO(1) = TM_WAIT(1)){;連射間隔(10) mytm2.cnt = 1 mytmx2.cnt = myx + 15 : mytmy2.cnt = myy - 16;自機弾の座標 TM_CO(1) = 0 ;自機弾のカウンター } if mytm2.cnt = 1 : mytmy2.cnt -= TM_SPD(1) ;自機弾のスピード(5) if mytmy2.cnt<-16 : mytm2.cnt = 0 loop if TM_CO(1) < TM_WAIT(1) : TM_CO(1)++ return;自機弾のカウンター < 連射間隔(10) : 自機弾のカウンター
お礼
a
補足
この上のプログラムの続きです。 ----------------------------- ;***************敵VS弾************************ *敵VS弾 repeat MYTMMAX ;自機弾の最大数(7) if PK == 2 : PK = 0 mytm_cnt = cnt ;自機弾についてのカウント数 tmx(0) = mytmx.mytm_cnt : tmy(0) = mytmy.mytm_cnt ;自機弾の座標 mytm_cnt2 = cnt ;自機弾についてのカウント数 tmx(1) = mytmx2.mytm_cnt2 : tmy(1) = mytmy2.mytm_cnt2 ;自機弾の座標 ;***************あたり判定**************************** MYMY(0) = mytm.mytm_cnt ;自機弾フラグ MYMY(1) = mytm2.mytm_cnt2 ;自機弾フラグ if enemy.cnt and MYMY(PK) { if(emx.cnt < tmx(PK)+8) and (tmx(PK)-32 < emx.cnt) and (emy.cnt < tmy(PK)+16) and (tmy(PK)-32 < emy.cnt){ enemy.cnt = 0 ;敵のフラグ mytm.mytm_cnt = 0 ;自機弾フラグ mytm2.mytm_cnt2 = 0 ;自機弾フラグ } } PK++ loop return