Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Поэтому под transform(если написать это слово в скрипте) подразумевается трансформ FirstPersonController`а, а не камеры. Transform камеры является под трансформом трансформа FirstPersonController`а

private не наследуется
Несколько «слов» в коде сделают наши скрипты независимыми и взаимозаменяемыми. Вообще надо делать все скрипты не зависимыми друг от друга.
MyMotor у вас будет интерфейс IMovable допустим. Тогда и переменная MyMotor myLittleMotor превратится в IMovable myLittleMotor. Класс наследник должен реализовать все методы родителя.
Пустые (никак не пере объявленные методы) нужны например если мы заменили Мотор на другой Мотор, который в данной ситуации не должен реализовать прыжок, или мы захотели Мотор от одного моба повесить на другого.
И самое главное, дайте мне ссылку на статью про то как пользоваться интерфейсами. Можно ли потом в переменной одного типа хранить экземпляры разных классов?
InterfaceName и можем хранить в ней все объекты, реализующие этот InterfaceName. И при этом не возникнет ситуации, когда методы можно будет оставить пустыми — компилятор не позволит. Смысловая нагрузка останется, логичность выполнения работы программы тоже. Такое использование интерфейсов полностью описывает паттерн Strategy, ссылки на wiki и вики. MyMotor thisMotor = GetComponent<MyMotor>();
.....
/// <summary>
/// Класс приложения.
/// В данном примере выступает как клиент контекста.
/// </summary>
public static class Program
{
/// <summary>
/// Точка входа в программу.
/// </summary>
public static void Main()
{
// Создаём контекст и инициализируем его первой стратегией.
Context context = new Context(new ConcreteStrategy1());
// Выполняем операцию контекста, которая использует первую стратегию.
context.ExecuteOperation();
// Заменяем в контексте первую стратегию второй.
context.SetStrategy(new ConcreteStrategy2());
// Выполняем операцию контекста, которая теперь использует вторую стратегию.
context.ExecuteOperation();
}
}
.......
MyMotor thisMotor = GetComponent<MyMotor>();
Он точно знает когда какую стратегию надо использовать.
В то время как используя
MyMotor thisMotor = GetComponent<MyMotor>();
Как я понимаю, подобной независимости в примере из вики можно добиться, сделав чтобы в классе Program происходил перебор всех имеющихся скриптов(экземпляров классов) и из них выбирался поддерживающий нужный нам интерфейс?(мы опять же знаем что он всего один на данном игровом объекте) Или я чего-то не так понял?
CreateBlockIntefrace createBlocInterfase = GetComponent<CreateBlockIntefrace > ();
ПОЛИМОРФИЗМ — не знаю, как дать ему определение. Может вы сами потом его дадите. Мы лучше рассмотрим все на примере.
Это открытый член класса, поменять значение которого можно в любом месте кода:
mobHpObject.originalHp = -300;
mobHpObject.originalHp = "Охо хо я хочу делать игры";
Разумеется можно поменять значение этой переменной. Она характеризует стартовое значение здоровья. Его можно поменять если мы хотим получить более мощьного моба например. А глобально она объявлена чтобы её можно было менять в самой Unity, и не лазить в код.
Авторы юнити последние маразматики
mobHpObject.originalHp = -300;
Правильно программируем. Используем полиморфизм. Общая логика игровых персонажей