magnitude unity что такое

Vector2.magnitude

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Submission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Description

Returns the length of this vector (Read Only).

If you only need to compare magnitudes of some vectors, you can compare squared magnitudes of them using sqrMagnitude (computing squared magnitudes is faster).

Did you find this page useful? Please give it a rating:

Thanks for rating this page!

What kind of problem would you like to report?

Is something described here not working as you expect it to? It might be a Known Issue. Please check with the Issue Tracker at

Thanks for letting us know! This page has been marked for review based on your feedback.

If you have time, you can provide more information to help us fix the problem faster.

You’ve told us this page needs code samples. If you’d like to help us further, you could provide a code sample, or tell us about what kind of code sample you’d like to see:

You’ve told us there are code samples on this page which don’t work. If you know how to fix it, or have something better we could use instead, please let us know:

You’ve told us there is information missing from this page. Please tell us more about what’s missing:

You’ve told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:

You’ve told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:

You’ve told us there is a spelling or grammar error on this page. Please tell us what’s wrong:

You’ve told us this page has a problem. Please tell us more about what’s wrong:

Thanks for helping to make the Unity documentation better!

Is something described here not working as you expect it to? It might be a Known Issue. Please check with the Issue Tracker at issuetracker.unity3d.com.

Copyright © 2018 Unity Technologies. Publication: 2017.3-002A. Built: 2018-04-04.

Источник

Unity3d. Уроки от Unity 3D Student (B21-B24)

Базовый урок 21 — Вычисление расстояния между объектами

В уроке будет показано, как получить расстояние между двумя точками в трехмерной сцене, используя метод Vector3.Distance. Кроме того, в дополнение к оригинальному уроку я расскажу о свойстве Vector3.sqrMagnitude, при помощи которого можно получить более оптимизированный код вычисления расстояния.

При разработке игры часто возникает необходимость узнать расстояние между объектами. Один из самых простых способов это сделать — использовать метод Distance класса Vector3.
Рассмотрим следующую сцену: кубик fallbox, падающий вниз на более большой куб Cube; точечный источник света Point light, находящийся между ними; и, конечно, камера.

magnitude unity что такое

Если мы захотим, чтобы источник света загорался только тогда, когда он находится в пределах определенной дистанции от падающего куба, то нужно создать следующий скрипт:
Код на JavaScript:

В скрипте мы сперва объявляем переменную box, в которой будем хранить ссылку на компонент Transform нашего падающего ящика. Затем в Update вызываем метод Vector3.Distance, передав в качестве аргументов координаты объектов, между которыми требуется вычислить расстояние. Полученное расстояние заносим в переменную dist и сравниваем его с необходимым значением (10 в нашем примере). Если расстояние не превышает заданное значение — включаем компонент света, в противном случае — выключаем. При помощи метода Debug.Log выводим значение текущего расстояния в консоль.
Добавляем скрипт на объект света Point Light, в поле скрипта Box перетаскиваем fallbox, запускаем сцену. Кубик падает вниз, свет не горит. При расстоянии между светом и кубиком
В уроке рассказывается, как сделать паузу (задержку) в игре с использованием метода WaitForSeconds и инструкции yield.

Если вы хотите реализовать паузу между некими игровыми событиями (например, создание игровых объектов через определенные промежутки времени), то необходимо воспользоваться Корутинами (сопрограммами). Корутина — это специальным образом оформленный метод, работающий в основном потоке игры, и обычно вызываемый после метода Update. Корутина, в зависимости от заданных условий, может прервать свое выполнение в определенной точке своего кода, а затем вновь продолжить работу (подробнее о корутинах есть на хабре — прим. переводчика).
Посмотрим на сцену ниже. На ней есть куб, играющий роль земли, источник света, камера и пустой объект под именем spawn point, висящий над землей. Кроме того, в папке Project есть префаб weight — кубик с компонентом rigidbody. Наша цель — периодически создавать кубики из префаба в точке spawn point, после чего они будут падать на землю.

magnitude unity что такое

Создать объект легко — нужно воспользоваться уже знакомым методом Instantiate. Однако, если мы просто напишем вот такой скрипт и добавим его к объекту spawn point
Код на JavaScript:

… то получим примерно следующую картину:

magnitude unity что такое

Буквально за пару секунд выполнения у нас создалось слишком много объектов. Это не удивительно, ведь мы поместили создание объекта в метод Update, который вызывается каждый кадр игры, т. е. несколько десятков раз в секунду. Любые попытки как-то вставить задержку в метод Update, чтобы объекты создавались реже, ни к чему хорошему не приведут — это уменьшит FPS игры. Вместо этого нам поможет корутина.
Давайте реализуем скрипт создания объектов следующим образом:
Код на JavaScript:

Итак, в переменный box мы храним ссылку на префаб порождаемого объекта. Булева переменная readynow служит для определения, запускать ли сейчас метод-корутину MakeBox, которая создает объект. Внутри корутины MakeBox мы сперва запрещаем ее вызов (readynow = false), потом создаем объект методом Instantiate, а затем используем связку yield / WaitForSeconds (обратите внимание на различия в коде для JS и в коде для C# — прим. переводчика). Эта связка позволяет приостановить выполнение корутины, в данном случае, на 2 секунды, а потом вернуться обратно и продолжить выполнение, где мы теперь разрешаем вызов корутины (readynow = true). Метод Update при этом не простаивает эти 2 секунды, а продолжает выполняться, только не запускает заново новую корутину, пока не отработает предыдущая.
Напоминаю, что скрипт надо добавить к объекту spawn point, перетащить в поле скрипта Box префаб кубика и запустить сцену. Теперь кубики создаются через каждые 2 секунды.

magnitude unity что такое

Дополнительные материалы:

Базовый урок 23 — Система частиц

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

magnitude unity что такое

magnitude unity что такое

Теперь необходимо написать небольшой скрипт и добавить его к нашему взрыву. Это скрипт будет отвечать за уничтожение системы частиц со сцены, после того, как все ее частицы прекратят существование:
Код на JavaScript:

В скрипте мы сохраняем компонент системы частиц в переменной ps. В методе Update проверяем присутствие компонента на сцене. Если он есть — проверяем, «жив» ли он. Это делается при помощи вызова метода IsAlive — он вернет false, если система частиц больше не генерирует частицы и все ранее сгенерированные частицы исчезли. Если это так — удаляем объект системы частиц.

Дополнительные материалы:

Базовый урок 24 — Работа с циклом «For»

В уроке рассказывается об использовании оператора цикла «For», с помощью которого можно повторять необходимые действия, пока выполняется заданное условие.

При создании игры часто возникает задача выполнить несколько раз подряд некие повторяющиеся действия. Для этого не стоит «копипастить» код, а нужно воспользоваться циклами.
На нашей сцене есть земля, свет, камера и пустой объект creator.

magnitude unity что такое

Мы хотим, чтобы из объекта creator с небольшими паузами создались из префаба несколько других объектов. Для этого напишем следующий скрипт:
Код на JavaScript:

Источник

Magnitude unity что такое

Главная » Как реализовать движение в разных игровых жанрах в Unity

Как реализовать движение в разных игровых жанрах в Unity

В этом очень «подвижном» уроке вы узнаете, как реализовать движение в разных игровых жанрах на движке Unity — как в 2D, так и в 3D.

Версия: C# 7.3, Unity 2019.3, Unity

В данном уроке вы узнаете, как реализовать в Юнити четыре типа движения в разных игровых жанрах. Вы создадите простую игру с одной предысторией с двумя причудливыми персонажами, Катто и Ратто. Посмотрите, как они оживают в четырех различных контекстах:

Примечание. В этом уроке предполагается, что у вас есть базовые знания Unity и небольшой навык написания кода. Если вам нужно изучить основы, то почитайте «Начало работы с Unity» и «Введение в создание скриптов в Unity».
Также для этого урока необходим установленный редактор Unity версии 2019.1.3 или выше.

Приступая к работе

Скачайте проект, используя кнопку «Скачать материалы урока», которая находится в начале страницы, затем распакуйте файлы и откройте проект в Unity. Проверьте структуру папок в окне Project:

magnitude unity что такое

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

Теперь, когда вы ознакомились с материалами проекта, подумайте о типах движений в играх, которые знаете и любите.

Различные типы движений в играх

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

Движение в 2D против 3D

Совершенно реальные 2D-миры невозможны. 2D и 3D — это просто модели, нарисованные для отражения восприятия людей. Проверьте, как выглядит Катто в 2D и 3D:

magnitude unity что такое

В этом уроке вы будете работать как с 2D так и с 3D движением. Но сначала вам нужно узнать об одном важном представлении: трансформации объектов в Unity.

Понимание трансформации игровых объектов

Инструмент Transform состоит из 3 компонентов. Position — в основном представляет собой точку в трехмерном пространстве. Rotation — определяет ориентацию объекта в трехмерном пространстве. И компонент Scale — определяет размер игрового объекта.

magnitude unity что такое

В Юнити вы можете видеть три компонента инструмента Transform следующим образом:

magnitude unity что такое

Обратите внимание, что у значений Position, Rotation и Scale также есть значения X, Y и Z. Каждый набор значений X, Y и Z известен как Vector3.

Теперь, когда у вас есть эта информация, вы можете переходить к первому типу игры: 2D-платформеры.

Реализация движения в двумерной игре-платформере

В качестве первого шага вы поработаете над созданием движения в 2D-платформере. Вот некоторые примеры опубликованных игр в этом жанре: Super Mario Bros., Sonic, Castlevania, Ghouls ‘n Ghosts, Rayman Legends, Mega Man, Metroid и Ninja Gaiden.

Многие думают, что платформеры проще всего программировать просто потому, что они выглядят простыми. Персонаж прыгает с одной платформы на другую, насколько это может быть сложно, правда? На самом деле, 2D платформеры сегодня могут быть очень сложными. Скоро вы поймете почему.

Настройка игровой сцены

Откройте сцену в RW/2D Platformer Movement/Scenes.

Это окно Hierarchy:

magnitude unity что такое

Разверните Player Objects. Вы поработаете с PaperCatto.

Если вы не видите PaperCatto в окне Scene, то вот простая хитрость: выберите его в окне Hierarchy, нажмите на кнопку F в окне Scene, затем нажмите на кнопку 2D View.

magnitude unity что такое

Добавление движения

Есть два типа движений:

Выбрав PaperCatto, придайте Катто некоторые физические свойства. Это позволит ему передавать движения и перемещаться. Добавьте компонент Rigidbody 2D:

magnitude unity что такое

Чтобы Катто проявлял чувства и выражал позу, добавьте компонент Animator:

magnitude unity что такое

И наконец, Котто нужен компонент Box Collider 2D, чтобы была возможность сталкиваться с другими объектами:

magnitude unity что такое

Теперь нажмите кнопку Play.

magnitude unity что такое

Упс, это выглядит неудобно! По крайней мере, это работает.

Настройка движения

Итак, Катто теперь может двигаться, но вам все еще нужно сделать некоторые исправления, чтобы заставить его двигаться правильно. Разверните компонент Box Collider 2D и нажмите на кнопку Edit Collider.

magnitude unity что такое

Теперь у вас должна быть возможность редактировать границы двумерного коллайдера. Расширьте их так, чтобы коллайдер полностью покрывал Катто.

magnitude unity что такое

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

Измените параметр Gravity Scale на 2 в компоненте Rigidbody 2D. Он контролирует величину силы тяжести, которая применяется к Катто. Низкое значение, например 1, заставило бы Катто прыгать очень высоко, как если бы Катто был на Луне. Например, 2 делает силу прыжка в этом конкретном случае большее естественной.

magnitude unity что такое

И наконец, в разделе Constraints убедитесь, что отметили Freeze Rotation Z. Это предотвратит падение Катто во время бега.

Реализация Animator Controller

Последнее, но не менее важное: подключите компонент Animator Controller. Выбрав PaperCatto, разверните Animator, затем выберите PaperCatto в качестве контроллера:

magnitude unity что такое

Нажмите Play и… Вуаля! Разве это не самая красивая бумажная кошка, которую вы когда-либо видели?

magnitude unity что такое

Написание скрипта движения для 2D-платформера

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

Представьте, что вы хотите создать игру в стиле Super Mario Bros. с Катто в главной роли. Какое движение вам нужно? Что ж, вам нужно будет водить Катто по осям X и Y и поворачивать его:

magnitude unity что такое

Здесь Катто перемещается по оси X, двигаем его слева направо и обратно:

magnitude unity что такое

Здесь Катто вращается вокруг оси Y, поворачиваем его слева направо и обратно:

magnitude unity что такое

Перемещение Катто вправо и влево

Теперь, когда вы знаете, какое движение вы хотите, чтобы у Катто было, пора написать сценарий, который его реализует.

Начните с перетаскивания файла CattoMovement.cs в PaperCatto, чтобы добавить скрипт в качестве нового компонента:

magnitude unity что такое

Следующий шаг — написать скрипт.

Дважды нажмите на CattoMovement.cs, чтобы изменить его.

В скрипте будут три главные группы переменных. Первая группа сохраняет компоненты. Добавьте эти две строчки в позицию //1:

Эти две строчки кода содержат информацию для перемещения и анимации Катто соответственно.

Здесь вы структурируете переменные в соответствии с логикой «Защита, Тип и Имя»:

magnitude unity что такое

Обратите внимание, что чем проще имена переменных, тем легче их читать.

Чтобы использовать компоненты Animator и Rigidbody 2D вы должны указать Unity запомнить их. Итак, теперь вы должны сообщить Юнити, что делать и где найти эту информацию.

Добавьте следующий код, чтобы метод Start выглядел следующим образом:

Теперь вам нужно отслеживать состояние Катто. Например, вам нужно знать касается ли Катто поверхности или прыгает.

Вторая группа сохраняет логические значения. Добавьте следующие строчки кода в позицию //2:

Когда вы делаете имена переменных понятными, вы экономите время, особенно если вам нужно вернуться для отладки кода после того, как некоторое время не работали над проектом.

Даем Катто способность прыгать

Эта последняя группа переменных хранит ввод и специальный компонент, позволяющий прыгать. Добавьте эти шесть переменных в позицию // 3:

LayerMask — удобный инструмент Unity для разделения и упорядочивания мирового пространства на уровни. На простом английском языке говорится: «Эй, Юнити, эти два объекта находятся в одном пространстве, поэтому они должны взаимодействовать друг с другом». В этом случае Катто и поверхность находятся в одном пространстве, поэтому они сталкиваются.

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

Двигаемся дальше, Update — отличное место для опроса нажатых кнопок, так как данная функция вызывается каждый кадр.

Катто не найдет Ратто, если не сможет двигаться, поэтому так держать!

Завершение движения

Впереди две задачи: проверить, действительно ли Катто находится на поверхности, и проверить ввод с клавиатуры.

Добавьте следующий строчки кода в метод Update :

Переменная moveInput кеширует горизонтальную ось клавиатуры. Популярная викторина: знаете ли вы, какой тип у этого значения?

Далее вам нужно добавить четыре координаты в логику движения. Вы будете решать их, один за другим.

Добавление условий к движению

Сначала добавьте следующий код ниже двух переменных, которые добавляли в последнем разделе:

Данное значение в аниматоре определяет, будет ли Катто выглядеть так, как будто он идет — когда у него большая скорость — или стоит на месте — когда его скорость близка к нулю.

Добавьте второе условие следующим образом:

И наконец, как и прежде, этот код говорит: «Эй, Юнити, возьми Animator и установи триггер Jump так, чтобы Катто выглядел так, как будто он прыгает».

Вот третье условие:

И для последнего условия:

Вы только что выполнили несколько очень важных движений: ходьба, прыжки, приседание и снова вставание. Далее вы сделаете что-то еще более интересное!

Отражение спрайта Катто

Добавьте следующий код:

Обратите внимание, что вы устанавливаете переменной cattoIsFacingRight противоположное значение каждый раз, когда вызываете функцию.

Затем вы сохраняете Vector3 с именем cattoScale и передаете ему текущий масштаб Катто. Вы умножаете cattoScale на отрицательное значение единицы, что дает вам противоположное изображение. Вот так можно повернуть Катто.

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

Проще простого, не так ли?

Отражение спрайта Катто в соответствии с его движениями

Добавьте следующий код:

Вы выполнили три последних условия!

Сначала добавьте эти два оператора if ниже:

На английском языке первое выражение гласит: «Если Катто смотрит не в правильном направлении, и кто-то нажимает клавишу, чтобы переместиться вправо: переверните Катто.» Оператор else if противоположен: «Если Катто смотрит вправо и ввод указывает налево: переверните Катто».

Теперь, для последней настройки, добавьте этот код ниже:

Наконец, вы устанавливаете переменной cattoIsJumping значение false. Так что следующий раз он окажется на поверхности и сможет прыгать.

Вернитесь в окно Hierarchy, найдите CheckGround внутри PaperCatto и перетащите этот объект в окно Inspector.

Попробуйте установить следующие значения:

magnitude unity что такое

magnitude unity что такое

И наконец, нажмите на кнопку Play и удивитесь этой кошачьей натуре!

magnitude unity что такое

Кодирование 2D-движения с видом сверху

Движение с видом сверху — это когда игрок воспринимает одну из осей движения как плоскую. То есть, вы воспринимаете Катто, идущим на заднем плане, когда нажимаете вверх. Сравните это с PaperCatto, который прыгает на месте, когда вы нажимаете вверх.

Среди выпущенных игр этого жанра: Bomberman, Golden Axe Warrior, The Legend of Zelda, BattleShip and HALO Spartan Assault.

Подключение элементов

Откройте сцену в RW / 2D TopDown Movement / Scenes.

Теперь в окне Hierarchy выберите Player Objects > Catto > Catto, тот, у которого есть Sprite Renderer.

Добавьте в окне Inspector следующие элементы:

Вот вам вызов: попробуйте добавить эти элементы самостоятельно. Если у вас возникли проблемы, воспользуйтесь этой помощью:

magnitude unity что такое

Компонент Animator не будет работать без параметра Controller. Итак, перейдите в 2D TopDown Movement / Models / Catto и найдите контроллер CattoAnimator. Перетащите его в параметр Controller компонента Animator в окне Inspector:

magnitude unity что такое

Нажмите Play и … Катто падает. Чтобы это исправить, вам нужно настроить Rigidbody 2D. Гравитация заставляет Катто падать, поэтому установите для свойства Gravity Scale значение 0 и повторите попытку.

magnitude unity что такое

Превосходно! Катто остается на месте. С этой точки зрения он выглядит так, как будто он на самом деле стоит на полу. Однако он все еще не может двигаться.

Написание 2D скрипта движения с видом сверху

Перейдите в 2D Top Down Movement / Scripts и перетащите TopDownMovement.cs в Catto. Вы также можете сделать это:

magnitude unity что такое

Идеально! Дважды щелкните на скрипт в окне Inspector, чтобы отредактировать его. Этот скрипт кажется намного проще предыдущего.

Теперь добавьте эти три переменные:

Так же как раньше используйте Update для получения ввода с клавиатуры. Добавьте этот код:

Переменная movement содержит информацию по горизонтальной и вертикальной осям с клавиатуры.

Это будет примерно так:

magnitude unity что такое

magnitude unity что такое

А что насчет последнего вызова? Какая величина?

Magnitude — это результат, который вы получаете из двух векторов, которые борются друг с другом. Поскольку вам нужно движение по диагонали, C# вычисляет magnitude за вас.

Почти готово… Не забудьте установить Velocity в окне Inspector. 3 — хорошее значение для начала.

Нажмите Play и …

magnitude unity что такое

Готово! Но подождите, это еще не все.

Перейдите в 2D TopDown Movement/Scripts и добавьте CollectCoins.cs к Катто. Теперь вы действительно можете играть в игру.

Превосходно! Вы закончили движение в 2D-игре с видом сверху.

Нажатие мышью в 3D для вращения и перемещения

Добро пожаловать в 3D-миры! С этого момента все игры, которые мы будем рассматривать, будут в трехмерном пространстве.

Игры с нажатием мышью и указанием курса для поворота и движения используют тип движения как в игре «Diablo», когда вы нажимаете на что-нибудь, чтобы получить контекстную информацию и/или двигаться в определенное место.

Другие примеры выпущенных игр в этом жанре: League of Legends, Age of Empires, Grim Fandango and Monkey Island.

Подключение элементов

Откройте сцену в 3D ClickToRotate Movement / Scene.

Итак, теперь вы знаете, что делать: вам нужно сначала все подключить. Добавьте к Катто следующие компоненты:

Вот как это сделать:

magnitude unity что такое

Вам также необходимо изменить размер коллайдера. Совет: переключитесь на 2D-вид, чтобы облегчить определение размера.

magnitude unity что такое

Чтобы подключить CattoAnimator, разверните Animator в окне Inpector. Перейдите к 3D ClickToRotate Movement/Models/Catto/Animator и перетащите его в Controller.

Вы можете сделать то же самое для Avatar или просто подключите его в окне Inspector:

magnitude unity что такое

Наконец, не забудьте отметить Apply Root Motion.

Вот как выглядит финальный результат:

magnitude unity что такое

Нажмите на кнопку Play. Катто покажет стандартную анимацию ожидания, хотя он еще не может двигаться.

magnitude unity что такое

Итак, теперь вы настроили Катто для анимации. Далее вы заставите его двигаться!

Добавление NavMesh Agent

Есть специальный модуль, который нужен Катто, он называется NavMesh: Nav для навигации, Mesh для … э … mesh: V. Серьезно, это сетка: очень примитивная форма, в которой хранится информация о расстоянии, положении и других простых вычислениях.

Agent — это программа, которая автоматически выполняет определенные задачи.

NavMesh Agent для работы нужен NavMesh

Найдите Nav Mesh Agent в окне Inspector и добавьте его к Катто. Следующие настройки работают прекрасно:

magnitude unity что такое

Не бойтесь экспериментировать, особенно с параметрами steering.

Примечание: в этой сцене уже есть NavMesh. Если вы хотите создать свой собственный, вкладка навигации находится под Window > AI > Navigation.

Написание скрипта для поворота и перемещения

Откройте ClickToMove.cs в папке 3D ClickToRotate Movement/Scripts.

Добавьте следующую строчку кода в начало файла:

Затем добавьте три переменные в начало класса:

Как и раньше, вы инициализируете переменные в методе Start :

Добавьте этот код в метод Update :

Говоря простым языком, «Эй, Unity, выстрели лучом, в который я щелкнул, и установи пункт назначения Катто на то место на земле, куда попадет этот луч».

Последний if сравнивает расстояние между двумя точками: где вы щелкнули и где Катто должен остановиться. Вы можете изменить это значение в окне Inspector.

Добавьте скрипт ClickToMove к Катто и запустите игру. Следуйте по пути, чтобы найти Ратто!

magnitude unity что такое

Поздравляю! Вы узнали, как перемещать персонажа в трех разных типах игры. Остался еще один.

3D движение танка

Идея о том, что танки должны перестать двигаться, чтобы повернуть, широко распространена в Интернете. Вот почему такое движение называется танковым. Однако первым танком был Mark I, и он отличался хорошей способностью поворачиваться даже в движении. Вопреки распространенному мнению, танки могут поворачиваться и двигаться одновременно, как и персонажи в играх с таким типом движения.

Во всяком случае, вот вкратце о танковом движении:

Выпущенные игры этого жанра: Resident Evil, Back in 1995 и Silent Hill

Подключение элементов

Откройте сцену в RW / 3D Tank Movement / Scenes.

Выберите Tankatto в окне Hierarchy под Player Objects.

Вы уже знаете строевую подготовку на данный момент. Можете ли вы придумать компоненты для этого в 3D?

Танкатто нужен Box Collider для взаимодействия с миром и Rigidbody, которым будет управлять и двигать игрок.

Вот наглядное пособие:

magnitude unity что такое

Не забудьте отредактировать коллайдер:

magnitude unity что такое

Перейдите в 3D Tank Movement / Scripts и перетащите TankMovement.cs на Tankatto. Затем откройте его, чтобы отредактировать.

Вот как это должно выглядеть после добавления остальных компонентов:

magnitude unity что такое

Написание скрипта движения танка

В вашем исходном скрипте есть шесть разных переменных. Как и раньше, каждый из них относится к чему-то, что вам нужно переместить или оживить Катто. Три из них связаны со скоростью, один — для Rigidbody и два — для ввода.

Добавьте эти переменные в начало скрипта:

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

Поворачивание Катто

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

Добавьте эти короткие строчки кода в метод FixedUpdate :

Как видите, названия функций представляют их действия.

Теперь добавьте весь код, чтобы сделать Turn() красивой отдельной функцией:

Что здесь происходит?

Учтите, что turnInput и turnSpeed считываются несколько раз в секунду. Вы должны взять ситуацию под контроль.

На изображении ниже указан порядок выполнения:

magnitude unity что такое

Функция Unity MoveRotation (Quaternion rot) заставляет вас использовать Quaternion. Но подождите, разве вращения не являются Vector3 в Unity, как сказано в начале урока?

В этом контексте, можете ли вы угадать, по какой оси вы вращаете Катто?

magnitude unity что такое

Перемещение Катто

Теперь последний шаг: заставить Танкатто двигаться вперед. Для начала создайте новую функцию с именем Move() следующим образом:

Эта последняя часть заботится о движении … она почти такая же, как и предыдущая.

И наконец, MovePosition принимает параметр movement и добавляет его к текущему положению Танкатто.

Танкатто еще не может двигаться. Не забудьте установить значения в Инспекторе. Вы можете использовать эти числа или изменить их по своему усмотрению:

Нажмите Play и проверьте, все ли работает так, как задумано.
Вы можете подумать: а где же самое интересное в перемещении и вращении танка?

Помните, что у Танкатто есть компонент Missile Logic в окне Inspector, но изучение того, как он работает, не входит в данный урок. Теперь, когда вы зашли так далеко, он нужен только для того, чтобы оживить ситуацию.

Нажмите кнопку мышки и посейте хаос!

Между прочим, вопреки тому, что некоторым кажется, ни одна крыса не пострадала при создании этого игрового жанра.

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

Куда двигаться дальше?

Поздравляем с окончанием урока! Помните, что вы можете получить готовый проект, нажав кнопку «Скачать материалы урока» вверху страницы.

Жанр попойки, детка! Попробуйте смешать два или более жанра в одной игре. Смешивание — лучший способ открыть для себя что-то новое. Например, попробуйте перенести PaperCatto в 3D Tank Movement, как если бы это была бумажная мишень. Также можно попробовать сделать движущиеся мишени.

Вы определенно захотите проверить это, чтобы повысить свою ци как разработчика игр:

Как создать игру Bomberman в Unity. Или, если вам нравятся видео, посмотрите эту впечатляющую серию статей Брайана Моакли «Основы C#».

Большое спасибо за чтение и выполнения урока по разным типам движения в Unity. Если у вас есть какие-либо вопросы или комментарии, не стесняйтесь присоединиться к обсуждению ниже!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *