Menu
CoddyTech

マーブルゴルフ

CoddyのUnityジャーニー「物理演算とゲームプレイ」セクションの一部。レッスン 68/71。

小さなグリーンでビー玉のゴルフをしましょう。ビー玉はティーから始まります。矢印キーで狙いを定め、Spaceを押し続けてパワーをため、離してショットします。ビー玉は転がり、クッションや中央のブロックに跳ね返りながら減速し、十分に遅くなるとぴたりと止まります。そのとき初めて、再びショットできます。ゆっくりカップに転がり込んだビー玉は中に落ちますが、速すぎるとそのまま通り過ぎます。打数は少ないほどよいです。

2つのスクリプトを書きます。ビー玉にはGolf、カップにはHoleを使います。

challenge icon

チャレンジ

難しい

ゴルフのビー玉を動かそう:狙いを定め、力をためて、打とう。

  1. Raw Horizontal 軸を使って aimSpeed で aim を回し、pointer を transform.position + Quaternion.Euler(0f, aim, 0f) * Vector3.forward に配置します。
  2. 静止中(速度が stopSpeed 未満)、Space キーを押し続けると chargeRate ずつ power が増加し、maxPower に達します。キーを離すと狙った方向にインパルスを加え、power をリセットし、"Stroke " + strokes をログに出力します。
  3. FixedUpdate() では、静止中に両方の速度をゼロにします。

「プレイ」を押してパットします。その後、「確認」を押します。

自分で試してみよう

using UnityEngine;

public class Golf : MonoBehaviour
{
    public int strokes = 0;
    [SerializeField] private Transform pointer;
    [SerializeField] private float aimSpeed = 90f;
    [SerializeField] private float chargeRate = 4f;
    [SerializeField] private float maxPower = 6f;
    [SerializeField] private float stopSpeed = 0.3f;
    private Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    // 矢印キーで狙いを定め、Spaceでパワーをため、離すと打ち、速度が落ちたら止める
}

物理演算とゲームプレイのすべてのレッスン

自分で練習してみよう: Unityプレイグラウンド