Menu
CoddyTech

Катящийся мяч

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

В этой главе вы создадите небольшую игру Coin Rush. Вы будете катать шар по арене со стенами с помощью стрелок и собирать монеты, пока не истекло время. Как и в проекте Unity, работу выполняют два скрипта: Ball двигает шар и отслеживает счёт и время, а Coin находится на каждой монете. Coin.cs изначально представляет собой пустой класс, а в следующем уроке мы его заполним.

Шар катится, когда вы толкаете его, а не перемещаете напрямую. Примените силу к его Rigidbody с помощью AddForce и оставьте вращение свободным: сила двигает шар, а трение пола удерживает нижнюю часть шара и заставляет его вращаться. Этот шар для боулинга катится по дорожке, пока удерживается клавиша Space:

public float push = 6f;
private Rigidbody rb;

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

void FixedUpdate()
{
    if (Input.GetKey(KeyCode.Space))
    {
        rb.AddForce(Vector3.forward * push);
    }
}

Шар, который катится без проскальзывания, вращается со скоростью, равной его скорости, делённой на радиус. Поэтому шар радиусом 0.5, движущийся со скоростью 3 единицы в секунду, вращается со скоростью 6 радиан в секунду (rb.angularVelocity). Если вместо этого изменить его transform.position или зафиксировать вращение в разделе Constraints компонента Rigidbody, шар будет скользить, как шайба, не вращаясь. Одноцветная сфера выглядит одинаково в обоих случаях: чтобы увидеть вращение, следите за Angular Velocity в разделе Info компонента Rigidbody во время игры.

challenge icon

Задание

Средне

Начни Coin Rush с мяча. В Inspector задай Ball значение force, равное 10.

  • В Start() сохрани Rigidbody мяча в rb.
  • В FixedUpdate() толкай мяч стрелками: Input.GetAxis("Horizontal") вдоль x и Input.GetAxis("Vertical") вдоль z, в обоих случаях умножая на force.
  • Не ограничивай вращение мяча, чтобы он катился.

Пока оставь Coin.cs без изменений. Нажми Play, щёлкни по игре и покатайся по арене, затем нажми Check.

Попробуйте сами

using UnityEngine;

public class Ball : MonoBehaviour
{
    public float force = 10f;
    private Rigidbody rb;

    void Start()
    {
    }

    void FixedUpdate()
    {
        // Двигайте шар стрелками: Horizontal — по оси x, Vertical — по оси z.
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Физика и игровой процесс