こんにちは初めまして。
現在「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*メイン
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ランキング
-
python3について。
-
vba クリップボードクリアにつ...
-
Pythonのコードエラーについて...
-
ホームページのプログラムの見...
-
IT業界より楽に稼げる業界って...
-
JRのjsonファイルって使って大...
-
HTMLソースが表示のページのも...
-
正規表現 URL抽出「 [\\/\\b]{0...
-
google formsを使ったタスク依...
-
このプログラミング言語のfor分...
-
プログラミング未経験者(殆ど未...
-
初心者が簡単なPowerShellスク...
-
ホワイトハッカー
-
pythonでのカーソル移動がずれる
-
恒久的リダイレクトについて
-
プログラマーと学歴の関係性に...
-
Pythonで仮想通貨の自動売買が...
-
16x16のスプライトフォント
-
Google ColaboでGUI作成
-
REGZAに接続できない(パソコン)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
動かした画像を元の位置に戻すには
-
MOUSE_MOVE マウスの動きと同...
-
MCを一定の間隔で吸着させた...
-
MCをブラウン運動させたい。
-
_x,_y指定の移動の方法(Flash l...
-
HSP あたり判定
-
[開発形態]UIレイアウトまでデ...
-
わからない・・・!!!
-
press座標とrelease座標からス...
-
下記のような運動をホームペー...
-
ムービークリップの初期座標
-
Flash mx2004 画質が劣化して...
-
画像のランダム配置からボタン...
-
mcの交点の座標を求める方法
-
Flashパブリッシュエラー
-
ボタンによるムービークリップ移動
-
photoshopで書いた四角の枠の中...
-
テキストボックスの中身をリセ...
-
python ボタンを押すと複数の関...
-
変数に256文字以上のテキストを...
おすすめ情報