Menu
CoddyTech

Гольф с шариками

Часть раздела Физика и игровой процесс путешествия по Unity на Coddy. Урок 68 из 71.

Гольф с шариком на небольшом зелёном поле. Шарик начинает на площадке для удара: целься в него с помощью стрелок, удерживай Space, чтобы набрать силу, и отпусти, чтобы ударить. Он катится, отскакивает от бортиков и блока посередине, замедляется, а когда становится достаточно медленным, полностью останавливается. Только после этого можно ударить снова. Шарик, который медленно вкатывается в лунку, падает в неё; тот, который прибывает слишком быстро, прокатывается прямо над ней. Чем меньше ударов, тем лучше.

Напиши два скрипта: Golf для шарика и Hole для лунки.

challenge icon

Задание

Сложно

Напиши код для игры в гольф: прицеливайся, набирай силу удара и бей.

  1. Поворачивай aim с помощью необработанной оси Horizontal со скоростью aimSpeed; установи pointer в точку transform.position + Quaternion.Euler(0f, aim, 0f) * Vector3.forward.
  2. В состоянии покоя (скорость ниже stopSpeed) удерживание Space увеличивает power на величину chargeRate до значения 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