Menu
CoddyTech

Пушечный тир

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

На одном конце стрельбища стоит пушка, а три мишени на разном расстоянии скользят из стороны в сторону. Наклоняй ствол вверх и вниз, чтобы достичь каждой дистанции, и выбирай время для выстрела так, чтобы мишень пересекала линию огня. Шар, попавший в мишень, выбивает её и расходуется; всё остальное, что заденет мишень, оставляет её нетронутой. Мишени — кинематические тела, поэтому попадания никогда не толкают их, а в пушке пять шаров.

Напиши два скрипта: Cannon для ствола и Target для каждой мишени.

challenge icon

Задание

Сложно

Напиши пушку: наведи её, затем выстрели пятью ядрами.

  1. В Update() прибавь Input.GetAxisRaw("Vertical") * turnSpeed * Time.deltaTime к angle, ограничь его диапазоном от 10 до 60 и задай transform.rotation = Quaternion.Euler(-angle, 0f, 0f);.
  2. При нажатии пробела, если balls > 0, создай ballPrefab в точке transform.position + transform.forward и вызови AddForce(transform.forward * power, ForceMode.Impulse).
  3. Уменьши balls на 1 и выведи в лог "Balls left: " + balls.

Нажми «Играть» и стреляй. Затем нажми «Проверить».

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

using UnityEngine;

public class Cannon : MonoBehaviour
{
    [SerializeField] private Rigidbody ballPrefab;
    [SerializeField] private float angle = 30f;
    [SerializeField] private float turnSpeed = 40f;
    [SerializeField] private float power = 30f;
    [SerializeField] private int balls = 5;

    void Update()
    {
        // Прицеливайтесь стрелками вверх и вниз, стреляйте с помощью Space
    }
}

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

Потренируйтесь самостоятельно: Песочница Unity