Menu
CoddyTech

Повторение: сторожевой пёс

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

challenge icon

Задание

Средне

Сторожевая собака не подпускает незнакомцев к своей будке. Напиши скрипт Dog. В Инспекторе для неё задаются player, kennel (красный коврик перед будкой), speed (3.5), guardRange (6) и bite (5). Скрипты Player и Health уже готовы: стрелки толкают игрока, а в скрипте Health игрока есть публичный метод TakeDamage(int amount).

  • Пока игрок находится ближе к будке, чем на расстояние guardRange, считая по земле, собака бежит к игроку. Расстояние измеряется от будки, а не от собаки.
  • Иначе собака бежит обратно к будке и останавливается, когда оказывается ближе чем на 0.3 к ней.
  • Собака бежит, задавая скорость своего Rigidbody равной speed по земле и сохраняя скорость по оси y.
  • Когда собака сталкивается с игроком (с тегом Player), скрипт Health игрока наносит ему 1 единицу урона, а игрок получает импульс силой bite, направленный от собаки по земле.

Нажми Play и подойди к будке, затем нажми Check.

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

using UnityEngine;

public class Dog : MonoBehaviour
{
    [SerializeField] private Transform player;
    [SerializeField] private Transform kennel;
    [SerializeField] private float speed = 3.5f;
    [SerializeField] private float guardRange = 6f;
    [SerializeField] private float bite = 5f;
    private Rigidbody rb;

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

    void FixedUpdate()
    {
        // охранять конуру: преследовать игрока, если он рядом с ней, иначе возвращаться домой
    }
}

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