当たり判定で当たったオブジェクトを消す - hoge1e3/Tonyu2 GitHub Wiki
当たり判定で当たったオブジェクトを消す
crashToメソッドを用いて,オブジェクトと当たり判定を行います。
- 当たってる場合は当たったオブジェクトを返します(if文で判定した場合
true扱いになります) - 当たっていない場合は
undefinedを返します(if文で判定した場合false扱いになります)
次の例では,
- PlayerオブジェクトにEnemyオブジェクトがぶつかると,Playerオブジェクト自身が消えます。
- PlayerオブジェクトにItemオブジェクトがぶつかると,ぶつかったItemオブジェクトが消えます。
Main
new Enemy{x:100, y:100, p:$pat_neko+49};
new Enemy{x:100, y:200, p:$pat_neko+49};
new Item{x:100, y:300, p:$pat_neko+30};
new Player{x:300,y:300};
Player
while(true){
if(getkey("right")>0) x+=3;
if(getkey("left")>0) x-=3;
if(getkey("down")>0) y+=3;
if(getkey("up")>0) y-=3;
//Enemyオブジェクトのどれかにぶつかっているか?
// eがundefined →ぶつかっていない
// eがundefined以外→ぶつかったEnemyオブジェクトがeに格納される
e=crashTo(Enemy);
if(e){//eがundefined以外だったら
die();//プレイヤー自身を消す
}
//Itemオブジェクトにぶつかっているか?
it=crashTo(Item);
if(it){//itがundefined以外だったら
it.die();//ぶつかったItemオブジェクトを消す
}
update();
}
Enemy
// 敵の動作を書く。(とりあえず何も書かなくてもよい)
Item
// アイテムの動作を書く。(とりあえず何も書かなくてもよい)
※当たり判定を変更するにはcrashScaleの値を変更します(1なら画像の大きさと同じ) →実例