はじめまして。
僕は今縦シューティングを作成しています。
とても簡素ながら大まかなシューティングの要素は抑え、
残すところは敵のバリエーションや動きの考察、敵を配置しステージを構成するのみとなりました。
まぁここからが本当のヤマ場かもしれませんが・・・
前置きはこの辺にして、今回投稿させて頂いた理由はタイトルにもあるように、敵の動きについてです。
敵が現れたら自機の方向を向く様にしたいのですが、良い方法が思いつきません。
一つ二つ考えたのですが、角度やラジアンとか言うのがちんぷんかんぷんで、どうもうまくいきません。
皆様、良いアドバイスをお願いします。
出来れば下のソースを、画像の頭が赤い●を常に遅れて向くように書き改めて頂ければ、至極幸です。
buffer 3
picload dir_exe+"/sample/game/face.bmp" ; 画像ファイル
screen 0,640,480
x1=0 : y1=0 ; 左上XY
x2=640 : y2=480 ; 右下XY
mx=320.0 ; X座標
my=240.0 ; Y座標
msp=4.0 ; スピード
mr=0.0 ; 角度
mrsp=0.1 ; 角度回転スピード
zix=310
ziy=320
*main
redraw 0 ; 描画始め
color 0,0,64
boxf ; 背景を消す
gmode 2,64,64 ; 画像サイズ
pos mx,my
grotate 3,0,0,mr ; 画像コピー
color 255,0,0
pos zix,ziy
mes "●"
redraw 1 ; 描画終わり
await 20
stick key,15
if key&1 : zix-5 //
if key&4 : zix+5 // 赤い丸を動かす
if key&2 : ziy-5 //
if key&8 : ziy+5 //
//
//
//
//加筆するのはこの辺りでしょうか?
//
//
//
;if key&1 : mr-=mrsp // 一応保留
;if key&4 : mr+=mrsp //
;if key&2 : mgo=msp : goto *main2 //
;if key&8 : mgo=-msp : goto *main2 //
goto *main
*main2 ; 直進
rot=mr-1.57079632
mx=limitf( mx+cos(rot)*mgo, x1, x2 )
my=limitf( my+sin(rot)*mgo, y1, y2 )
goto *main
完全HSP付属のサンプルからのパクリで、相違点も多くは無いのですが・・・