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