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

遊べるゲームを作りたい

作りたいです。

Unityで自作ゲームを作る アイテムドロップ機能

f:id:hogemarunosuke:20170312171904p:plain

遊び方

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

アイテムためて各種スキルを覚えたりとかを妄想中。

アイテムドロップ機能の実装

敵を倒すことでアイテムをドロップします。ミリ単位で刻んで拾っていくのもアレなので、バキューム機能をつけてある程度の範囲内のアイテムを自動で吸いこむようにしました。

空中のアイテムを地面に落とすためにRigidbodyをつけましたが、敵がガンガンぶつかって移動の妨げになってしまうので、地面に落ちたアイテムはRigidbodyを無効にするようにしました。自由落下は自前で実装して、Rigidbodyをアタッチしないようにしたほうがよかったかもしれません。。。

ソースは↓のような感じ。特に新しいことはしていません。

private void OnCollisionStay(Collision other)
{
    switch (other.gameObject.tag)
    {
        case "Terrain":
            CheckMovement();
            break;
    }
}

private void CheckMovement()
{
    if (GetRigidbody().velocity.magnitude <= 0 &&
        GetRigidbody().isKinematic == false)
    {
        Stop();
    }
}

public void Stop()
{
    GetRigidbody().useGravity = false;
    GetRigidbody().isKinematic = true;
}

そろそろ敵の種類と攻撃パターンを増やさないと…。