当たり判定で当たったオブジェクトを消す - 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なら画像の大きさと同じ) →実例

参考

Backlink

ライブデモ