Unityでジャンクゲームを作っているっぽい

会社帰りにGPD PocketにUnity入れてゲーム作ってます

Pyxelで作る09 アイテムの種類を増やす

飛んでくるアイテムの種類を増やしたい
理由は、当たったらゲームオーバーになるアイテムを出したいのです

方針

初期化の設定時に種類判別用の変数を増やして動かしていけばなんとかなりそう

下準備

新しいキャラデータと効果音を用意しておく

キャラデータ

3つめのキャラクタを適当に作る
f:id:mekatamatama:20201101185259p:plain

効果音

2番に接触時の効果音を追加
f:id:mekatamatama:20201101185308p:plain

アイテムの初期化を修正

randint(0, 1)という種別用の要素を追加

  • 0の時は普通のアイテム
  • 1の時はダメージアイテム

という風に運用したい

self.fruit = [(i * 60, randint(0, 104), True, randint(0, 1)) for i in range(4)]

アイテムの処理を修正

種別用の変数(ver)を見て、処理を分岐していく

def update_fruit(self, x, y, is_active, ver):
        #衝突判定(playerとfruitの座標の絶対値から衝突しているか判定している)
        if is_active and abs(x - self.player_x) < 12 and abs(y - self.player_y) < 12:
            #種別で分岐
            if ver == 0:
                is_active = False   #表示を消す
                self.score += 10    #scoe加算
                pyxel.play(1,0,loop = False)     #SE再生(CH 1,SOUND 0,単発再生)
            elif ver == 1:
                is_active = False   #表示を消す
                pyxel.play(1,2,loop = False)     #SE再生(CH 1,SOUND 0,単発再生)
            
        # 左に移動
        x -= 2

        # 画面外に出たら
        if x < -40:
            # 画面反対側に強制移動
            x += 240
            # y座標はランダム
            y = randint(0, 104)
            # 表示flag on
            is_active = True
            # 種類再設定(ランダム)
            ver = randint(0, 1)

        # 返り値を設定
        return (x, y, is_active, ver)

verという変数が追加されている

def update_fruit(self, x, y, is_active, ver):

verで処理を分岐させている

0は今まで表示していたアイテム
1の方でゲームオーバー処理を入れる予定

#種別で分岐
if ver == 0:
    is_active = False   #表示を消す
    self.score += 10    #scoe加算
    pyxel.play(1,0,loop = False)     #SE再生(CH 1,SOUND 0,単発再生)
elif ver == 1:
    is_active = False   #表示を消す
    pyxel.play(1,2,loop = False)     #SE再生(CH 1,SOUND 0,単発再生)

画面外の処理

再び種別をランダムで決めている

# 種類再設定(ランダム)
ver = randint(0, 1)

最後に返り値を追加

# 返り値を設定
return (x, y, is_active, ver)

こんな感じでアイテムの種類を増やせました
f:id:mekatamatama:20201101215030p:plain
次は、ゲームオーバーな画面遷移を追加したいかな