ここでは、「game01」というディレクトリ内で作業しているという前提で説明しています。
弾を撃てるようにする
キーが押されたら弾を発射する処理を作ってみます。
「bearChara.coffee」を開いて、インスタンスメソッド「behavior」を下記のように編集します。
behavior:->
super()
switch @_processnumber
when 0
axes = PADAXES[0]
@x += axes[HORIZONTAL] * 4
@y += axes[VERTICAL] * 4
# 以下追加分
buttons = PADBUTTONS[0]
if (buttons[0])
addObject
image: 'bear'
motionObj: bullet
x: @x
y: @y
ys: -16
width: 32
height: 32
animlist: [
[100, [0, 1, 0, 2]]
]
追加分を説明していきます。
buttons = PADBUTTONS[0]
「PADBUTTONS[0]」は、最初に接続したゲームパッドのボタン、もしくはキーボードの情報が格納されています。
if (buttons[0])
「button[0]」は、ゲームパッドのボタン0、もしくはキーボードの「z」か「スペースバー」が押されていたら「true」が格納されています。
もし押されていた場合、新しいスプライトを生成します。
「bullet」クラスで動作が定義されたスプライトを生成します。
メソッドの修正が終了しましたら、保存してコンパイルしてください。
次に、ゲームのトップディレクトリ(ディレクトリ「game01」直下)で、
$ enforce derive bullet
を実行して新規クラスファイルを生成します。
「src」ディレクトリに「bullet.coffee」が生成されているのを確認しましたらエディタで開き、「behavior」を下記のように修正します。
behavior:->
super()
switch @_processnumber
when 0
if (@y < 0)
removeObject(@)
キャラのy座標が0(画面上端)より小さくなった場合、自分自信(@)を削除する処理を追記しました。
修正が終了しましたら、保存してコンパイルしてください。
コンパイルが正常に終了しましたら、ブラウザをリロードしてみてください。
スペースバーを押すとクマが上に飛んで行くと思います。
チュートリアル(4) <--- ⬛︎ ---> チュートリアル(6)