04. カップの作成

1. 今回すること

今回は、ゴルフゲームには欠かせない、カップを作成したいと思います。

カップとは、ゴルフにおいてボールを打って入れる穴のことでこの穴にボールが入るとゴールとなり、そこまでかかった打数がそのホールでのスコアになります。ゴルフはスコアが低いほどいいスコアなので、いかに少ない打数でカップにボールを入れるかが大切になっていきます。

2. 作っていく

カップは穴なので、単純に穴を作ればいいだけかと思いきや、Unityで穴を作ろうとするとすごく大変なので、キューブを4つ使い、疑似的な穴を作成する方法で、カップを作っていきます。

こんな感じ。

“HoleBlock”というゲームオブジェクトは、4つのキューブとカップの下の黒い床のゲームオブジェクトからなるもので、これをコピペして、どのようなホールでもすぐにカップが作れるようにしておきます。

ここでいうホールとは、RPGとかでいうところのステージです。結構、言語化がむずい。

次に、”GoalHole”というスクリプトを作成し、こんな感じのコードを書きます。

    
using UnityEngine;

public class GoalHole : MonoBehaviour
{
    private bool isGoal = false;

    private void OnTriggerEnter(Collider other)
    {
        if (isGoal) return;

        if (other.CompareTag("Player"))
        {
            Debug.Log("Goal!! カップイン");

            isGoal = true;

            Rigidbody ballRb = other.GetComponent();
            if(ballRb != null)
            {
                ballRb.linearVelocity = Vector3.zero;
                ballRb.angularVelocity = Vector3.zero;
                ballRb.isKinematic = true;
            }
        }
    }
}
    

あとは、こんな感じでボールがカップに入ったことを検知するゾーンを作っておきます。

そしたら、このゾーンにさっき作ったスクリプトを張り付けて完成!!

ボールがカップに入ると、Goal!! カップインとコンソールに表示されていますね。

3. まとめ

今回は、カップを作成しました。また、記事には書いていませんが、ボールが打てる条件を変えたり、摩擦を追加したりして、よりゴルフに近い感じにしました。次回は、まだ未定です。