まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
昨日作ったアイテムを自動回収出来るようにしてみました。
まず、昨日作った時点で敵を倒すと、その地点から下に向かってアイテムが移動するだけだったのですが、出来れば一瞬上に移動してから
下に落ちるように(ジャンプしてるみたいな感じ)したかったので、最初にそれを作ってみました。
アイテム(クリスタル)の出現は↓のようなスクリプトで出現させているのですが
*************************************
;クリスタル出現処理
es_exnew cry,1,499
if cry=-1 : break
es_set cry,ex,ey,150
es_effect cry,36,36,0,0,0,ESB_ALPHA,200
; 爆風設置
es_type cry,512
; 効果type値(512)
es_apos cry,0,-10,100
*************************************
最後の行のes_apos cry,0,-10,100でまずY軸方向に上に移動させます。
で、次にアイテムを↓のように検索して・・・
*************************************
cry=0
repeat
es_find cry,512,cry ;クリスタル(512)スプライト検索
if cry=-1 : break ;無ければbreak
es_get cryy,cry,9 ;クリスタルy座標取得
cryy++ ;クリスタル速度アップ
if cryy>4 : cryy=4
es_apos cry,0,cryy,100 ;クリスタル移動
cry++
loop
*************************************
Y軸方向の移動距離をプラスしていけば、最初はマイナスだったのがプラスに移動するので、上に上がってから下がってきます。
このままだと下がっていく時に速度が上がり過ぎるので、下がっていく時の速度を一定以上にしないようにすればOK。
で、自動回収ですが、これは自機とアイテムの距離を計算して、一定以下になったら自機に向かってくるようにしました。
*************************************
;クリスタル移動,自動回収処理
cry=0
repeat
es_find cry,512,cry ;クリスタル(512)スプライト検索
if cry=-1 : break ;無ければbreak
es_get cryy,cry,9 ;クリスタルy座標取得
cryy++ ;クリスタル速度アップ
if cryy>4 : cryy=4
es_apos cry,0,cryy,100 ;クリスタル移動
if (jikicnt<150)&(jiki>0){
es_check jikicry,cry,1 ;クリスタルと自機の当り判定
es_get cryex,cry,3 ;x座標取得
es_get cryey,cry,5 ;Y座標取得
jcx=(cryex+13)-(px+24) ;自機とクリスタルの当り判定計算
jcy=(cryey+13)-(py+24) ;
if (abs(jcx)<100)&(abs(jcy)<100):es_aim cry,px,py,800
;自機とクリスタルの位置が100ドット以下なら、自動回収
if jikicry>0 {
es_kill cry ;自機とクリスタルが当ったらクリスタル消去
}
}
cry++
loop
*************************************
このような感じで、まずアイテムのX座標とY座標を取得してjcx=(cryex+13)-(px+24)と jcy=(cryey+13)-(py+24)でそれぞれの
座標の差を求めます。
後はif (abs(jcx)<100)&(abs(jcy)<100):es_aim cry,px,py,800で自機とアイテムのX座標とY座標の差が
100ドット以下になったら自機に向かってアイテムが移動するようにしました。
で、自機とアイテムが当ったらアイテム消去しています。
後は、ここにアイテムを取ったときの処理を入れれば良いのですが、どうするかは悩み中です(汗)
とりあえずこれで、自機とアイテムの距離が100ドット以下になったら、自動回収が出来るようになりました^^
まず、昨日作った時点で敵を倒すと、その地点から下に向かってアイテムが移動するだけだったのですが、出来れば一瞬上に移動してから
下に落ちるように(ジャンプしてるみたいな感じ)したかったので、最初にそれを作ってみました。
アイテム(クリスタル)の出現は↓のようなスクリプトで出現させているのですが
*************************************
;クリスタル出現処理
es_exnew cry,1,499
if cry=-1 : break
es_set cry,ex,ey,150
es_effect cry,36,36,0,0,0,ESB_ALPHA,200
; 爆風設置
es_type cry,512
; 効果type値(512)
es_apos cry,0,-10,100
*************************************
最後の行のes_apos cry,0,-10,100でまずY軸方向に上に移動させます。
で、次にアイテムを↓のように検索して・・・
*************************************
cry=0
repeat
es_find cry,512,cry ;クリスタル(512)スプライト検索
if cry=-1 : break ;無ければbreak
es_get cryy,cry,9 ;クリスタルy座標取得
cryy++ ;クリスタル速度アップ
if cryy>4 : cryy=4
es_apos cry,0,cryy,100 ;クリスタル移動
cry++
loop
*************************************
Y軸方向の移動距離をプラスしていけば、最初はマイナスだったのがプラスに移動するので、上に上がってから下がってきます。
このままだと下がっていく時に速度が上がり過ぎるので、下がっていく時の速度を一定以上にしないようにすればOK。
で、自動回収ですが、これは自機とアイテムの距離を計算して、一定以下になったら自機に向かってくるようにしました。
*************************************
;クリスタル移動,自動回収処理
cry=0
repeat
es_find cry,512,cry ;クリスタル(512)スプライト検索
if cry=-1 : break ;無ければbreak
es_get cryy,cry,9 ;クリスタルy座標取得
cryy++ ;クリスタル速度アップ
if cryy>4 : cryy=4
es_apos cry,0,cryy,100 ;クリスタル移動
if (jikicnt<150)&(jiki>0){
es_check jikicry,cry,1 ;クリスタルと自機の当り判定
es_get cryex,cry,3 ;x座標取得
es_get cryey,cry,5 ;Y座標取得
jcx=(cryex+13)-(px+24) ;自機とクリスタルの当り判定計算
jcy=(cryey+13)-(py+24) ;
if (abs(jcx)<100)&(abs(jcy)<100):es_aim cry,px,py,800
;自機とクリスタルの位置が100ドット以下なら、自動回収
if jikicry>0 {
es_kill cry ;自機とクリスタルが当ったらクリスタル消去
}
}
cry++
loop
*************************************
このような感じで、まずアイテムのX座標とY座標を取得してjcx=(cryex+13)-(px+24)と jcy=(cryey+13)-(py+24)でそれぞれの
座標の差を求めます。
後はif (abs(jcx)<100)&(abs(jcy)<100):es_aim cry,px,py,800で自機とアイテムのX座標とY座標の差が
100ドット以下になったら自機に向かってアイテムが移動するようにしました。
で、自機とアイテムが当ったらアイテム消去しています。
後は、ここにアイテムを取ったときの処理を入れれば良いのですが、どうするかは悩み中です(汗)
とりあえずこれで、自機とアイテムの距離が100ドット以下になったら、自動回収が出来るようになりました^^
PR
この記事にコメントする
カレンダー
10 | 2024/11 | 12 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
リンク
カテゴリー
最新記事
(04/04)
(12/26)
(12/25)
(11/17)
(10/11)
プロフィール
HN:
kt.
性別:
男性
自己紹介:
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
最古記事