Как вы уже упоминали, оба примера работают как положено.
Что мне нравится делать, так это назначать функциональность объекту, который отвечает за выполнение "действия".В этом случае камера «следит» за чем-то.В данный момент он следует за мячом, но позже, если вы хотите, чтобы он следовал чему-то другому, имеет ли смысл переходить к объекту игры с мячом, чтобы изменить это поведение?Я думаю, что нет.
Назначая функциональность объектам на основе «обязанностей», вы часто обнаруживаете, что ваш код в конечном итоге оказывается гораздо более модульным.
Конечно, такая практиканет ничего нового в разработке игр или разработке программного обеспечения вообще.Он дополняет Принцип единой ответственности и разделяет многие его качества.
Но, в конце концов, если вы работаете только над своим кодом, то вы будете знать базу коданаизнанку.Так что вам решать!
Я бы также предложил создать Components
исходя из этих обязанностей, когда это возможно.Поэтому вместо одного общего компонента Camera
я бы создал компонент FollowTarget
и прикрепил бы его к камере.При этом у вас будет возможность использовать тот же самый Component
, чтобы заставить какой-то другой произвольный объект следовать за другим произвольным объектом в вашей игре.
Счастливого обучения!