まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
自機狙い弾を作ろうと思って調べた所、サイン、コサイン、アークタンジェントを使用すれば簡単に作れると言う事がわかりました。
ただ、HSPでは標準でサイン、コサイン、タンジェントを扱う命令がないと思っていたので、5月7日書いたような平方根を利用してのスプリクトを作りました。
しかし、実はHSP3.0からは標準でサイン、コサイン、アークタンジェントを扱う命令が追加されていたようで
先日書いたようなややこしいスプリクトを書かなくても自機狙い弾を作れる事がわかりました。
とりあえず簡単な自機狙いスプリクトを作ってみました。
*************************************
screen 0,240,320,0,0,0 ;メインウインドウ0を240×320で用意
px=112:py=304 ;自機の初期位置
ex=0:ey=10 ;敵の初期位置
dx=8:dy=8 ;敵の移動量
dx=1:dy=1 ;敵弾の移動量
*main
redraw 0 ;仮想画面を指定
color 0,0,0 ;色に黒を指定
boxf 0,0,240,320 ;指定色で画面を塗りつぶす
;自機移動処理
stick ky,15 ;キーボードのチェック
if ky&1 :px-=4 :if px<0 :px=0
if ky&4 :px+=4 :if px>224 :px=224
if ky&2 :py-=4 :if py<0 :py=0
if ky&8 :py+=4 :if py>304 :py=304
pos px,py ;自機の座標指定
color 0,0,255 : mes "▲" ;青で▲を表示
;敵移動処理
ex=ex+dx ;敵座標に移動量をプラス
if(ex<0)|(ex>224) :dx=-dx ;画面端で反転
ey=ey+dy
if(ey<0)|(ey>304) :dy=-dy
pos ex,ey
color 255,0,0 : mes "■"
;敵弾処理
if etf=0 { ;敵弾が画面にない時{}内の処理を行う
ds=5 ;敵弾の速さ
r=atan(py-ey, px-ex) ;敵と自機との角度を求める
etxv = cos(r)*ds ;敵弾のx軸方向の移動量
etyv = sin(r)*ds ;敵弾のy軸方向の移動量
etf=1 ;弾の存在を有にする
etx=ex : ety=ey ;敵弾の初期座標
}
if etf=1 { ;敵弾が画面に有る時{}内の命令を行う
etx=etxv+etx ;敵弾のx軸の座標指定
ety=etyv+ety ;敵弾のx軸の座標指定
pos etx,ety ;敵弾の座標指定
color 255,255,0 : mes "●"
if etx>240 : etf=0 ;敵弾が画面から消えたら存在をなしにする
if etx<0 : etf=0
if ety>320 : etf=0
if ety<0 : etf=0
}
redraw 1 ;画面を更新
await 1
goto *main ;*mainに戻る
*************************************
HSP3.0使用
コレを実行すると敵「■」が弾「●」を自機「▲」に向かって撃ってきます。
簡単に説明すると、まずアークタンジェントを使用して敵と自機との角度を求め、その角度を元に弾の移動量を決めて移動させています。
ただ、筆者自身まだサイン、コサイン、タンジェントについての理解が浅く、コレを応用して今作ってるSTGに使う事が出来ていません。
(なぜが、命中精度が落ちてしまうんですよね・・・)
かれこれ3〜4日考えてるんですが、イマイチ上手く動いてくれません。でもコレが上手く動けば弾幕なんかも作りやすくなると思うので
もうちょっと頑張ってみよう。
上記スプリクトを実行するとこんな感じ↓
どこに動いても自機を狙ってきます^^
しかし学生の頃、もう二度とサイン、コサイン、タンジェントを使う日はこないだろうと思っていたのですが
まさか登場するとは(笑)
ただ、HSPでは標準でサイン、コサイン、タンジェントを扱う命令がないと思っていたので、5月7日書いたような平方根を利用してのスプリクトを作りました。
しかし、実はHSP3.0からは標準でサイン、コサイン、アークタンジェントを扱う命令が追加されていたようで
先日書いたようなややこしいスプリクトを書かなくても自機狙い弾を作れる事がわかりました。
とりあえず簡単な自機狙いスプリクトを作ってみました。
*************************************
screen 0,240,320,0,0,0 ;メインウインドウ0を240×320で用意
px=112:py=304 ;自機の初期位置
ex=0:ey=10 ;敵の初期位置
dx=8:dy=8 ;敵の移動量
dx=1:dy=1 ;敵弾の移動量
*main
redraw 0 ;仮想画面を指定
color 0,0,0 ;色に黒を指定
boxf 0,0,240,320 ;指定色で画面を塗りつぶす
;自機移動処理
stick ky,15 ;キーボードのチェック
if ky&1 :px-=4 :if px<0 :px=0
if ky&4 :px+=4 :if px>224 :px=224
if ky&2 :py-=4 :if py<0 :py=0
if ky&8 :py+=4 :if py>304 :py=304
pos px,py ;自機の座標指定
color 0,0,255 : mes "▲" ;青で▲を表示
;敵移動処理
ex=ex+dx ;敵座標に移動量をプラス
if(ex<0)|(ex>224) :dx=-dx ;画面端で反転
ey=ey+dy
if(ey<0)|(ey>304) :dy=-dy
pos ex,ey
color 255,0,0 : mes "■"
;敵弾処理
if etf=0 { ;敵弾が画面にない時{}内の処理を行う
ds=5 ;敵弾の速さ
r=atan(py-ey, px-ex) ;敵と自機との角度を求める
etxv = cos(r)*ds ;敵弾のx軸方向の移動量
etyv = sin(r)*ds ;敵弾のy軸方向の移動量
etf=1 ;弾の存在を有にする
etx=ex : ety=ey ;敵弾の初期座標
}
if etf=1 { ;敵弾が画面に有る時{}内の命令を行う
etx=etxv+etx ;敵弾のx軸の座標指定
ety=etyv+ety ;敵弾のx軸の座標指定
pos etx,ety ;敵弾の座標指定
color 255,255,0 : mes "●"
if etx>240 : etf=0 ;敵弾が画面から消えたら存在をなしにする
if etx<0 : etf=0
if ety>320 : etf=0
if ety<0 : etf=0
}
redraw 1 ;画面を更新
await 1
goto *main ;*mainに戻る
*************************************
HSP3.0使用
コレを実行すると敵「■」が弾「●」を自機「▲」に向かって撃ってきます。
簡単に説明すると、まずアークタンジェントを使用して敵と自機との角度を求め、その角度を元に弾の移動量を決めて移動させています。
ただ、筆者自身まだサイン、コサイン、タンジェントについての理解が浅く、コレを応用して今作ってるSTGに使う事が出来ていません。
(なぜが、命中精度が落ちてしまうんですよね・・・)
かれこれ3〜4日考えてるんですが、イマイチ上手く動いてくれません。でもコレが上手く動けば弾幕なんかも作りやすくなると思うので
もうちょっと頑張ってみよう。
上記スプリクトを実行するとこんな感じ↓
どこに動いても自機を狙ってきます^^
しかし学生の頃、もう二度とサイン、コサイン、タンジェントを使う日はこないだろうと思っていたのですが
まさか登場するとは(笑)
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が特に好きで、並木学氏は最高!
ブログ内検索
最古記事