Pyxelで作る05 アイテムとの当たり判定
参考サイト
今回も↓のサイトにお世話になっています
dev.classmethod.jp
今回追加したコード
update_fruit内でplayerとの衝突判定をしています
衝突したら、fruitの表示を消しています
def update_fruit(self, x, y, is_active): #衝突判定(playerとfruitの座標の絶対値から衝突しているか判定している) if is_active and abs(x - self.player_x) < 12 and abs(y - self.player_y) < 12: is_active = False #表示を消す 【省略】
ポイント
abs関数は絶対値を求めます
衝突判定は、fruteとプレイヤーの座標の差が12以下なら重なっているってので判定しています
(最近、collisionとかで判定ばかりしていたので、こういう方式での衝突判定は懐かしかったw)
図で示すと
x座標だけの説明ですが、y座標も考え方は同じ
絶対値が12未満であれば当たり判定が重なる = 衝突していることになります
なんで12って数値なのかは、当たり判定を見た目より小さくしたいからでしょう
ただ、各キャラクタ座標の起点は左上だから…見た目とチョット判定が合わないかもだけど…気にしないw
次は、得点取得とUI表示をやってみたい