いいよー
・入力を受け付けるのは1フレームにつき必ず1回
まずはこれだね
ループを作って、その中に
stickとbuttonを置こう
・スプライトを出す
次にこれ、最初はプレイヤーキャラを出すよ
さっき作ったループの上にspsetだ
さらに、ループの中にこれを置こう
spofs プレイヤー管理番号、X、Y
あとは入力に応じてXとYの値を変えるんだ
そしたらspcolをしよう
弾幕シューティングだから、あたり判定は小さめがいいよね(多分)
さあ次に敵を出すよ
spsetとspcolをしよう
これはループ内に書いた方がいいね
いっぱい出すんだもんね
ここでspfuncを使おう
なんたって敵は1体じゃない
敵が1体だとしても、飛び交う弾は明らかに1つじゃないので、spfuncが便利なんだ
ヘルプには上級者向けとか書いてあるけど、動きが分かれば誰だって使えるよ
これは言ってみれば、スプライトに「動きを覚えさせる」命令だ
具体的な使い方は
def 名前
動き
end
というプログラムをどこかに書いておいて、spfunc 管理番号、名前(文字列)
とするだけ
spfuncで覚えさせた動きは、ループ内にcall spriteと書くことで使える。これを忘れないこと
さて動きの部分に何を書くかというと、まずは
変数=callidx
だ。callidxはシステム変数であって、普段は-1だけど、call spriteをしたときだけ中身が変わるんだ。スプライト自身の管理番号が入っているよ
さらにspofs 管理番号 out で位置を取得しよう
例えば左に行くなら、x座標を引き算するだけでいいよね
現在地から(現在地+移動量)の位置まで毎フレーム動くというのが基本だ
行き過ぎたら消す処理も忘れずにね
というわけで次に敵が弾を撃つ処理だよ
敵の動きと同じ要領で、弾の動きを作ろう
とりあえずプレイヤーに向かって撃つだけにしとこう
ここでatan,sin,cosの3つの関数を使う
説明のためにプレイヤーの位置を(plx,ply)敵の位置を(x,y)とさせてもらうよ
まず変数=atan(ply-y,plx-x)と書くんだ
こうすることで敵からプレイヤーへの角度がラジアン値で取得できる。意味は理解できなくてもいい
ここで、予め用意していた2つの配列変数に、cos(変数)とsin(変数)を格納する
あとはspfuncしよう
また、弾の初期位置に注意
ちゃんと(x,y)の位置に移動しとこうね