Нужна помощь по Unity

Всем привет. В школе взял задание сделать игру(сырой прототип, если говорить честно) на юнити. Игра должна быть в 3д. Изначально хотел сделать что-то типа FPS, с 1 картой, просто с возможностью ходить и стрелять - этого пока было бы достаточно. Но или я разучился правильно гуглить, или материала на русском языке и правда мало, но ничего толкового я не нашел. Если это какой-то гайд, то это в лучшем случае показывают как скачать ассет, установить, и запустить - я бы хотел в целом экскурсию по программе, тому, как она работает, плавно от общего переходящую к частному - как мне сделать, что я хочу. Бесплатными ассетами пользоваться не брезгую, другое дело, что я не знаю, что мне нужно. В общем, надеюсь что меня поняли, посоветуйте, пожалуйста, что мне нужно. Еще раз: я не хочу полноценно изучать юнити(пока). Я хочу получить общее представление о 3д части движка, а потом готовый шаблон, который можно донастроить: патроны подкрутить, скорость, карту немного поменять и типа того.

Пы.Сы. Теги ставить не умею

Вы смотрите срез комментариев. Показать все
1
Автор поста оценил этот комментарий

А если вкратце....


Делаешь пустой проект. Нажимаешь "Play". Видишь небо и не можешь двигаться, потому что скриптов нет.

Тащишь 3д модел в проект, импортируешь. Настраиваешь материалы. Тащишь в сцену. Теперь можно её увидеть.


Чтобы куда-то идти, в кого-то стрелять или чего-то подбирать, тебе надо писать скрипт, или качать чужой. Потому что это framework, и по умолчанию у тебя чистый лист.

раскрыть ветку (7)
DELETED
Автор поста оценил этот комментарий
Можете про скрипты уточнить? Я так понял, что там самое главное - update(), т.е. обновление игрового мира, так? И происходит оно с заданной частотой. И если у нас на итерации, условно, нажата w, то за каждую такую итерацию мы продвигаемся на 0.1м вперед. Такая логика у игрового мира?
раскрыть ветку (6)
1
Автор поста оценил этот комментарий

С заданной частотой работает FixedUpdate. Простой Update может лагать. Не обязательно дёргать ввод в каждом апдейте, есть более модная инпутсистем которая работает с пользовательским вводом.

Эх и где это такие школы в которых задают делать игры на Юнити? В наше время такого не было

раскрыть ветку (3)
1
Автор поста оценил этот комментарий

Fixedupdate не работает с заданной частотой, а с фиксированным временным шагом. Например, у тебя физика идёт с "частотой", например, 120 кадров, а рисовка вытягивает 60 fps. Это значит, что перед каждыйм update() FixedUpdate() будет взываться пулёметной очередью два раза. И ждать не будет так, чтоб оно прям ровно 120 герц шло.

У него счётчик времени. Когда время физики отстаёт от времени Update, он начинает шагать вперёд, пока не догонит или не обгонит. Это может привести к неприятностям, если, например, в него обработку движения запихнуть, а при этом отрисовка идёт медленно.

DELETED
Автор поста оценил этот комментарий
Не заставляют, это у нас один кадр выдал предложение учителю, и все поддержали. За объяснение спасибо)
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

А чего не на Unreal?

1
Автор поста оценил этот комментарий

Документацию читай, блин, на английском. Если ты о каждой детали будешь спрашивать вопросы, ты через 10 лет с мёртвой точки не движешься. Для этого есть доки. Вроде даже часть их переведена, но ой не факт.


там самое главное - update(), т.е. обновление игрового мира

Не совсем. Update может и не быть, и кроме Update там много чего происходит.
Вот тут очень полезный график:
https://docs.unity3d.com/Manual/ExecutionOrder.html

И происходит оно с заданной частотой.
А вот ни фига. Оно происходит с той частотой, с какой игра успевает рисовать. Что, в свою очередь, может быть ограничено частотой монитора. Соответственно, на максимальной эффективности даст 60 кадров. А если фпс просядет, то будет идти медленнее.

Для этого там есть Time.deltaTime.
https://docs.unity3d.com/ScriptReference/Time-deltaTime.html

Кстати, физика работает с фиксированным временным шагом, но не вызывается с фиксированной частотой. В результате, например, она может обновляться не каждый кадр.

то за каждую такую итерацию мы продвигаемся на 0.1м вперед. Такая логика у игрового мира?
Нет. У тебя есть объект, и если ты хочешь его двигать вручную, а не физикой (а там есть физика), то ты хранишь в нём "скорость", и каждый update() делаешь ему, например, transform.position = transform.position + velocity * Time.deltaTime. Потому что Time.deltaTime показывает, сколько прошло с прошлого кадра, и все двигательные функции надо масштабировать по нему. С фиксированной частотой практически сегодня игры не работают.


И "Update()", который ты пишешь он не Update мира, а только для того объекта, на который ты его прилепил. Таких компонентов может много.

И ещё про компонентную архитектуру почитай, т.к. если у тебя, вдруг, классическое программерское образование, ты щас будешь иерархии наследования лепить. И просрёшь на это время, зазря.

раскрыть ветку (1)
1
DELETED
Автор поста оценил этот комментарий
Спасибо большое!
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку