Платформа
Урок 1 из 19 курса Игра в Unity: арканоид на Coddy.
В этом курсе ты создашь 3D-версию игры «Арканоид»; на уроке ты добавишь ракетку, отскакивающий мяч, стену из кирпичей, жизни, уровни и бонусы. Всё движется в плоскости x и y при z 0. Скрипты Paddle, Ball, Brick, GameManager и PowerUp пока являются заглушками. Кнопка «Играть» запускает игру, а кнопка «Проверить» проверяет решение.
У ракетки есть кинематический Rigidbody, который перемещается с помощью rb.MovePosition в FixedUpdate(), поэтому физика учитывает её движение. Кинематическое тело проходит сквозь стены, поэтому скрипт удерживает его внутри. Если ограничить координату центра границей стены, половина ракетки окажется внутри неё: предел равен координате стены минус половина ширины. Если стены расположены на -6 и 6, а ширина ракетки равна 2:
float half = 2f / 2f;
target.x = Mathf.Clamp(target.x, -6f + half, 6f - half);
rb.MovePosition(target);Центр остаётся между -5 и 5, поэтому края останавливаются точно у стен. Считывание ширины из transform.localScale.x на каждом шаге позволяет сохранять правильные пределы, даже если ракетка увеличится.
Задание
ЛегкоПеремещай платформу между стенами.
- В
Paddle'sFixedUpdate()задайfloat input: -1, если нажата клавиша со стрелкой влево или A, 1 для стрелки вправо или D, иначе 0. - Вычисли
Vector3 target = rb.position + Vector3.right * input * speed * Time.fixedDeltaTime; - С помощью
float half = transform.localScale.x / 2f;ограничьtarget.xзначениями от-wallX + halfдоwallX - half, затем выполниrb.MovePosition(target);
Нажми «Играть» и доведи платформу до обеих стен: у каждой она остановится. Затем нажми «Проверить».
Попробуйте сами
using UnityEngine;
using UnityEngine.InputSystem;
public class Paddle : MonoBehaviour
{
public float speed = 14f;
public float wallX = 8f; // Внутренние поверхности боковых стен находятся в точках -wallX и wallX
Rigidbody rb;
void Awake()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
// Двигайся с помощью клавиш со стрелками или A и D и оставайся между стенами.
}
}
Все уроки раздела Игра в Unity: арканоид
Потренируйтесь самостоятельно: Песочница Unity