読者です 読者をやめる 読者になる 読者になる

遊べるゲームを作りたい

作りたいです。

Unityで自作ゲームを作る 被ダメージ表現

f:id:hogemarunosuke:20170317093750p:plain

遊び方

WASDキーで移動。マウスで視点移動。
左クリックで射撃。右クリックでロックオン。左シフトでダッシュ(前進中のみ)。
左ダブルクリック後、押しっぱなしでチャージ、離してチャージショット。
スペースキーでジャンプ。ジャンプ中にもう一度スペースで2段ジャンプ。
Qキーでポーズ。ポーズすることでマウスカーソルを表示することができます。

プレイヤーにライフを設定して被ダメージ表現を与えました。

ライフバーの追加

毎度お世話になっている「Modern & Clean GUI」の画像を用いてスライダーコンポーネントを配置し、ライフバーを作りました。うむ、ライフバーがつくだけでグッとゲーム画面らしくなるな。ついでにハイスコア表示を削除しました。(決まり手:押し出し)

f:id:hogemarunosuke:20170316161421p:plain

プロ生ちゃんシューティングのときも悩んで結局放置していたのですが、スライダーを1~5ぐらいの小さな値に設定すると、画像のように表示がバグってしまうんですよね。今回は時間に追われているわけでもないので原因を調査。ネットで調査。うーんわからん。とりあえずスライダーの設定をイロイロいじってみることにしました。

f:id:hogemarunosuke:20170316161448p:plain

スライダーの初期状態。ここの「Fill」をイロイロいじる。

f:id:hogemarunosuke:20170316161436p:plain

ImageType?なんだそりゃ。「Simple」以外にもいろいろあるのね。へー、バーを円グラフみたいにしたり、上下に伸びるようにしたり、いろいろと種類を変えられるのかー。

f:id:hogemarunosuke:20170316161442p:plain

ん? 「Horizontal」? ここをこうするとどうなるんじゃ?





f:id:hogemarunosuke:20170316161429p:plain

ハラショー!(威良し!) こんな便利で重要な機能をわざわざわかりづらいところに配置するなんて、Unityさんもヒトが悪いですね。(被害妄想)

ダメージを受けたらプレイヤーを点滅させる

あなた今ダメージくらってますよ!という旨をプレイヤーに正確に伝えるために、ダメージを受けたら点滅させるようにしました。ソースはこんな感じです。

if (invisibleFlag)
{
    blinkTimer += Time.deltaTime;
    if (blinkTimer > blinkInterval)
    {
        // 点滅させる
        playerMesh.enabled = !playerMesh.enabled;
        blinkTimer = 0;
    }

    invisibleTimer += Time.deltaTime;
    if (invisibleTimer > invisibleInterval)
    {
        // 無敵時間終了
        invisibleTimer = 0;
        invisibleFlag = false;

        playerMesh.enabled = true;
    }
}

ダメージを受けたらプレイヤーをノックバックさせる

あなた今ダメージくらいましたよ!という旨をプレイヤーに正確に伝えるために、ダメージを受けたらノックバックするようにしました。ソースはこんな感じです。

// 体当たりしてきた敵とプレイヤーの座標からノックバックする方向を取得する
Vector3 knockBackDirection = (enemy.transform.position - player.transform.position).normalized;

// ノックバックの方向を逆転させる(強制的にバウンドさせるのでYは「1」固定)
knockBackDirection.x *= -1;
knockBackDirection.y = 1;
knockBackDirection.z += -1;

// ノックバックさせる(ノックバックの強さは敵から取得)
move.knockBack(knockBackDirection, enemyScript.GetKnockBackPower());

ついでに、スプリントとかチャージとかロックオンとか、あらゆる行動を強制的にキャンセルさせ、さらに強制的にバウンドさせて一時的に自由に移動できないようにしました。バウンド中にジャンプボタンで復帰できます(ただの2段ジャンプですが)。

プレイヤーの改良はこれぐらいにして、そろそろ敵キャラを増やしていかなければ…