前へ - 次へ - 目次
キャラクタの衝突判定をしましょう
次に,猫(Cat)がリンゴ(Apple)にぶつかると,リンゴを取る(リンゴが消える)ようにしてみましょう.
watchHit
という命令を使うと,2つのキャラクタがぶつかったときに,
特定の命令を実行することができます.
リスト1の
で示した部分を追加してみましょう.
(まだプログラムは実行しないでください)
リスト1 Game
siro=new Cat;
siro.say("いただきまーす");
apple1=new Apple;
apple1.x=200;
apple1.y=150;
apple2=new Apple;
apple2.x=300;
apple2.y=100;
watchHit(Cat, Apple, hitCatApple);
watchHit(Cat, Apple, hitCatApple)
と書くと,
猫(Cat
)とリンゴ(Apple
)がぶつかったときに,
hitCatApple
という命令が実行されるようになります.
ところで,hitCatApple
ってどんな命令でしょうか?
実はこの時点ではそんな命令はありません.この命令は自分で作ってあげる必要があります.
さらにリスト2のように追加してみましょう.
リスト2 Game
siro=new Cat;
siro.say("いただきまーす");
apple1=new Apple;
apple1.x=200;
apple1.y=150;
apple2=new Apple;
apple2.x=300;
apple2.y=100;
watchHit(Cat, Apple, hitCatApple);
function hitCatApple(cat,apple) {
apple.hide();
}
実行すると,猫とリンゴが触れたときにリンゴが消えるようになります.
最後に書いたfunction
で始まる部分は,
自分で新しい命令を作るための書き方です.
ここでは,hitCatApple
という名前の命令を作っています.
その後ろにある(cat, apple)
という部分は,この命令を実行するに
あたって,必要な情報を受け取るためのものです.
ここでは,「どのキャラクタと,どのキャラクタがぶつかったか」という情報を受け取り,
それぞれに,cat
と apple
という名前をつけています.
cat
は,もちろん最初に作った猫ですが,
もうひとつのapple
は,そのとき猫に触れていたリンゴです.
それはapple1
かもしれないし,
apple2
かもしれませんが,とにかく猫が触れていたほうのリンゴに,apple
という名前がつけられます.
そして,そのapple
に, apple.hide()
という命令を行っています.これは,そのキャラクタ(ここではapple
)を隠す(画面から見えなくする)命令です.
前へ - 次へ - 目次