![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
こんにちは初めまして。
現在「HSP」でSTG(シューテングゲーム)を作っております。
当たり判定がいまいち反応が悪くって困っております。
原因がわかる方いましたらよろしくお願いいたします。
●解決したいこと【当たり判定がちゃんと綺麗に処理される】
プログラム
--------------------------------------------------
screen 0,380,450
buffer 1
//picload "自機.bmp"
gsel 0,1
buffer 2
//picload "敵.bmp"
gsel 0,1
myx = 150 : myy = 350;自機の座標
mySpd = 5;自機スピード
;←弾
TM_SPD(0) = 5;自機弾のスピード(5)
TM_CO(0) = 0;自機弾のカウンターの初期化(連射間隔を調整)
TM_WAIT(0) = 10;連射間隔(10)
;→弾
TM_SPD(1) = 5;自機弾のスピード(5)
TM_CO(1) = 0;自機弾のカウンターの初期化(連射間隔を調整)
TM_WAIT(1) = 10;連射間隔(10)
MYTMMAX = 7;自機弾の最大数
repeat MYTMMAX;自機弾の最大数(7)
;←弾
mytm.cnt = 0;自機弾フラグ
mytmx.cnt = 0 : mytmy.cnt = 0;自機弾の座標
;→弾
mytm2.cnt = 0;自機弾フラグ
mytmx2.cnt = 0 : mytmy2.cnt = 0;自機弾の座標
loop
;敵
TKMAX = 7;敵の最大数
repeat TKMAX;敵の最大数(7)
enemy.cnt= 0 ;敵フラグ
emx.cnt = 0 : emy.cnt = 0 ;敵の座標
loop
;****************メインループ*************************
*メイン
redraw 2 : color 20,20,20 : boxf
;敵
gosub *敵機の処理
;自機
gosub *自機の移動
gosub *自機の←弾
gosub *自機の→弾
;当たり判定
gosub *敵VS弾
;自機
pos myx,myy : gmode 2,29,42,255 : gcopy 1,1,0
;敵
repeat TKMAX;敵の最大数(7)
if enemy.cnt = 1 : pos emx.cnt,emy.cnt : gmode 2,26,22,255 : gcopy 2,1,1
loop
;自機弾
repeat MYTMMAX;自機弾の最大数(7)
;←弾
if mytm.cnt = 1 {
pos mytmx.cnt,mytmy.cnt
gmode 2,9,8,255 : gcopy 1,1,43
}
;→弾
if mytm2.cnt = 1 {
pos mytmx2.cnt,mytmy2.cnt
gmode 2,9,8,255 : gcopy 1,1,43
}loop
redraw : await 10
goto*メイン
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_02.png?5a7ff87)
No.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) : 自機弾のカウンター
この回答への補足
この上のプログラムの続きです。
-----------------------------
;***************敵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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 配列の勉強をしています。使用する変数の意味、検索条件の書き方が難しいです。 2 2022/09/15 14:06
- Visual Basic(VBA) Dateserialで データ抽出 2 2022/06/26 21:07
- その他(プログラミング・Web制作) atcoder python コードへの助言 2 2022/08/12 15:31
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- Visual Basic(VBA) vbaで色付けされたセルを除外したいのですが 5 2023/01/28 17:22
- Visual Basic(VBA) 日付の計算方法 2 2022/07/01 23:35
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:02
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:00
- Excel(エクセル) マクロ(データ取得と転記)について教えてください 3 2022/12/24 12:18
- Visual Basic(VBA) VBA Bookの表示、非表示 1 2022/09/16 20:44
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
press座標とrelease座標からス...
-
MCを一定の間隔で吸着させた...
-
HSP あたり判定
-
わからない・・・!!!
-
photoshopで書いた四角の枠の中...
-
VBAで改行の入ったデータの正規...
-
テキストボックスの中身をリセ...
-
テキストボックスにセルの値を...
-
外部ファイルを読み込んだ際に...
-
複数行テキスト領域に中の文章...
-
else if文の順序を変えることに...
-
IP Address 入力フォームについて
-
CreateDialogについて
-
POIでのテキストボックス作成に...
-
GetModuleFileName(他のアプリ,...
-
VBScriptでMsgBoxのYesNoボック...
-
変数に256文字以上のテキストを...
-
ActionScript3のMovieClipについて
-
ActionScriptエディタを作りた...
-
スクロールバーとSEO
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定のムービークリップの上で...
-
障害物に対する衝突判定
-
Flashパブリッシュエラー
-
MCをブラウン運動させたい。
-
Flashの3Dメニューの視点を変え...
-
ActionScript2.0での座標について
-
動かした画像を元の位置に戻すには
-
Suzukaで一行ニュースティッカ...
-
プログラミング、アーキテクチ...
-
photoshopで書いた四角の枠の中...
-
YOASOBI
-
VBScriptでMsgBoxのYesNoボック...
-
テキストボックスの中身をリセ...
-
五芒星は、悪魔崇拝とどういう...
-
VBAで改行の入ったデータの正規...
-
python ボタンを押すと複数の関...
-
else if文の順序を変えることに...
-
テキストボックスにセルの値を...
-
ipconfig /releaseって何ですか?
-
UWSCのBTN関数について。
おすすめ情報