Главная страница

Автор Will Goldstone Источник Unity Game


Скачать 7.66 Mb.
НазваниеАвтор Will Goldstone Источник Unity Game
АнкорUnity Game Development Essentials RUS.pdf
Дата28.01.2017
Размер7.66 Mb.
Формат файлаpdf
Имя файлаUnity Game Development Essentials RUS.pdf
ТипДокументы
#746
страница6 из 17
1   2   3   4   5   6   7   8   9   ...   17

(
www.packtpub.com/files/code/8181_Code.zip

). Извлеките файлы и определите местонахождение пакета, названного doorSounds.unitypackage. Чтобы импортировать этот пакет, возвратитесь к Unity и пойдите в Активы | Пакет Импорта, проведите к файлу, Вы загрузили и выбираете это. Окно диалога Активов Импорта будет казаться перечисляющим эти два файла в пакете. Просто нажмите на кнопку Import на этом окне, чтобы подтвердить импорт. У Вас должны теперь быть
doorSlideOpen и doorSlideShut звуковые скрепки в списке Вашей Проектной группы активов, как показано в следующем скриншоте. Чтобы держать вещи опрятными, тяните их обоих в существующую папку Звуков, где у нас уже есть наш склон окружающая звуковая скрепка.

110 Теперь, когда активы находятся в Вашей проектной папке, drag and drop (перетащили и опустили) соответствующую скрепку к общественным variables участника в Инспекторе для Столкновений Игрока (Сценарий) компонент. Как только это сделано, компонент сценария должен быть похожим на это Теперь попытайтесь играть в игру и открыть дверь. Щелкните кнопкой Play наверху интерфейса, чтобы начать проверить, и приближаться к двери заставы и врезаться в это. Столкновение между игроком и дверью будет обнаружено, заставляя дверь открыться, и после 3 секунд, которые дверь закроет автоматически. Нажмите кнопку Play снова, чтобы закончить проверять. Чтобы позволить двери открываться, не будучи нажатым против этого, мы расширим коллайдер двери, как обсуждено вначале главы. Расширьте детские объекты ниже объекта игры заставы в группе Иерархии, нажимая на серую стрелку рядом с объектом, и затем выберите детский объект, названный дверью. Теперь с Вашим курсором мыши по представлению Сцены, нажмите F, чтобы сосредоточить представление относительно того объекта

111 В Инспекторе для этого объекта, расширьте параметр Размера компонента Коллайдера Коробки, так, чтобы Вы могли приспособить ценность Z глубина) коллайдера непосредственно. Измените существующую ценность на ценность 1.5, так, чтобы коллайдер стал расширенным, как показано в следующем скриншоте: Теперь попытайтесь играть тест снова, и Вы заметите, что дверь открывается скорее после приближения к нему, поскольку граница коллайдера простирается далее от видимой двери. Однако, Вы должны также отметить физическое врезание в коллайдер, который происходит. Этому можно противостоять, используя Более

112 аккуратный способ коллайдера, номы будем изучать спусковые механизмы далее в следующей главе. Так пока, мы осуществим обсужденный кастинг более раннего луча второго подхода. Бросая луч отправляют от игрока, мы будем отрицать потребность в нашем коллайдере характера игрока, чтобы фактически коснуться коллайдера двери. Приблизьтесь к кастингу С 2 лучами В этой секции мы осуществим дополнительный подход к открытию двери с обнаружением коллизий. Хотя обнаружение столкновения или более аккуратное обнаружение были бы действительным подходом, вводя понятие кастинга луча, мы можем гарантировать, что наш игрок только открывает дверь заставы, когда они стоят перед этим, потому что луч будет всегда стоять перед направлением, перед которым оказывается Первый Диспетчер Человека, и как таковой не пересекают дверь, если, например, игрок поддерживает к этому. Выведение из строя комментариев использования обнаружения столкновения Чтобы избежать потребности написать дополнительный сценарий, мы просто прокомментируем то есть, временно, дезактивируют часть кода, который содержит наш Functions обнаружения столкновения. Чтобы сделать это, мы добавим характеры, чтобы превратить наш рабочий код столкновения в комментарий. В программировании комментарии можно оставить как напоминание, но никогда не выполняются. Так дезактивировать часть кода, Вы можете превратить это в комментарий - мы именуем это как комментирующий Переключитесь назад на Вашего редактора сценария (Unitron/Uniscite) и перед линией function OnControllerColliderHit(hit:
ControllerColliderHit){ place the following characters: Помещение передового разреза и звездочки в Ваш сценарий начинает массовый комментарий (в противоположность двум передовым разрезам, которые просто комментируют единственная линия. После Functions обнаружения столкновения, поместите перемену этого, то есть, звездочка, сопровождаемая передовым разрезом. Ваш весь Functions должен был изменить цвет синтаксиса в редакторе сценария и быть написанным как это
/* function OnControllerColliderHit(hit:
ControllerColliderHit){

113 if(hit.gameObject.tag == "outpostDoor" && doorIsOpen
== false){ currentDoor = hit.gameObject;
Door(doorOpenSound, true, "dooropen", currentDoor);
} Сброс дверного коллайдера
Поскольку мы не хотим эффекта врезания в невидимый коллайдер на двери, возвратитесь к компоненту Коллайдера Коробки двери, выбирая дверной детский объект в Инспекторе и затем устанавливая ценность Размера Оси Z к 0.1. Это будет соответствовать глубине двери визуально. Добавление луча Переключитесь назад на редактора сценария и переместите свой курсор несколько линий вниз от открытия Update () function. Мы помещаем броски луча в Update () function, поскольку мы должны технически бросить наш луч вперед каждая структура. Добавьте в следующем коде var hit : RaycastHit; if(Physics.Raycast (transform.position, transform.forward, hit, 5)) { if(hit.collider.gameObject.tag=="outpostDoor"
&& doorIsOpen == false){ currentDoor = hit.collider.gameObject; Door(doorOpenSound, true, "dooropen", currentDoor);
} Вначале луч создан, устанавливая частный Variables, названный хитом, который имеет тип RaycastHit. Отметьте, что это не нуждается в частной приставке, которая не будет замечена в Инспекторе - это является просто частным по умолчанию, потому что это объявлено в
Functions. Это будет использоваться, чтобы хранить информацию на луче, когда это пересечет коллайдеры. Всякий раз, когда мы обращаемся к лучу, мы используем этот Variables. Тогда мы используем два если утверждения. Родитель, если отвечает за кастинг луча и использует Variables, мы создали. Поскольку мы помещаем кастинг луча в, если утверждение, мы в состоянии только вызвать вложенный, если утверждение, если луч поражает объект, делая более эффективный сценарий. Наше первое, если содержит Физику. Raycast, фактическая команда, которая бросает луч. У этой команды есть четыре параметра в пределах ее собственных скобок Позиция, чтобы создать луч (transform.position - позиция

114 объекта этот сценарий относится, который является Первым Диспетчером Человека Направление луча (transform.forward - передовое направление объекта этот сценарий относится, Структура данных RaycastHit мы настраиваем вызванный хит - луч, сохраненный как Variables Длина луча (5-a расстояние в единицах игры, метрах) Тогда у насесть вложенный, если утверждение, что первые проверки
Variables хита для столкновения с коллайдерами в мире игры, определенно поразили ли мы коллайдер, принадлежащий объекту игры, помечали outpostDoor, таким образом hit.collider.gameObject.tag
Во-вторых, это, если утверждение, как гарантированное, наш Functions обнаружения столкновения сделал - что doorIsOpen логическая переменная ложна. Снова, это должно гарантировать, что дверь не будет повторно вызывать много раз, как только она начала открываться. Как только оба, если условия утверждений соблюдают, мы просто, устанавливают currentDoor Variables в объект, хранивший в хите, и затем называют Дверь () Functions таким же образом, что мы сделали в нашем Functions обнаружения столкновения currentDoor
= hit.collider.gameObject;
Door(doorOpenSound, true,
"dooropen");
Playtest игра еще рази Вы заметите, что, приближаясь к двери, это не только открывается прежде, чем Вы врежетесь в это, но также и только открывается, когда Вы оказываетесь перед этим, потому что луч, который обнаруживает дверь, брошен в том же самом направлении, перед которым стоит характер игрока. Резюме В этой главе мы исследовали два ключевых метода для того, чтобы обнаружить взаимодействия между объектами в трехмерных играх. У и кастинга луча и обнаружения столкновения есть много отдельного использования, и они - ключевые навыки, которые Вы должны ожидать к повторному использованию в Вашем будущем использовании Unity. В следующей главе мы изучим другой метод обнаружения столкновения, используя коллайдеры набора объектов, чтобы вызвать способ. Этот способ позволяет обнаружение столкновения, но удаляет физическое присутствие объекта, учитывая пример - коллекция объектов без игрока, врезающегося в них. Попытайтесь думать о спусковых механизмах как о столкновениях без воздействия. В то время как мы, возможно, проявили этот подход с дверью заставы, важно изучить основное понятие

115 обнаружения столкновения сначала, которое является, почему мы учимся в этом специфическом заказе. Мы создадим игру коллекции, в которой игрок должен найти четыре батареи, чтобы перезарядить замок на двери заставы, и не позволить вход в заставу, если эти батареи небыли собраны.
5 и
В этой главе мы продолжим нашу работу от Главы 4. Работая с подобным подходом к предыдущей главе, мы будем расширять наше знание обнаружения столкновения при использовании третьего метода столкновения, то есть, при использовании коллайдеров как Спусковые механизмы. Спусковые механизмы часто упоминаются как фактические компоненты. Однако, в простых условиях, они - примитивные коллайдеры, с которыми Вы уже знакомы, нос более аккуратным набором способа в Инспекторе, использующем, Более аккуратный checkbox, как показано в следующем скриншоте: Поскольку мы уже настроили заставу с вводной дверью, мы теперь ограничим доступ игрока, заставляя их найти объекты, чтобы открыть дверь. Создавая onscreen инструкции, когда игрок приближается к двери, мы сообщим ему, что дверь требует, чтобы источник энергии был открыт. Мы тогда добавим ой показ пустой батареи на экране. Это побудит игрока искать больше объектов, то есть, батарей, которые рассеяны поблизости, чтобы завысить цену достаточной власти открыть дверь.

116 Создавая эту простую загадку, Вы изучите следующее Работа с 2-ыми объектами, используя Структуры GUI Как управлять onscreen текстом с Текстовыми элементами GUI Как использовать prefab, чтобы создать кратные числа объекта игры, которые сохранены как актив Создание prefab батареи
В этой секции мы импортируем загруженную модель батареи и превратим ее в шаблон данных prefab-a Unity, который мы можем использовать, чтобы сделать многократные копии модели с предопределенными параметрами настройки примененными. Если Выработали с Adobe Flash прежде, то Вы могли бы сравнить эту идею понятию
MovieClip
, в чем Вы можете создать много идентичных копий, или изменить отдельное создание копий. Загрузка, импорт, и место Чтобы начать создавать загадку, Выбудете нуждаться в пакете актива батареи, который доступен в кодовой связке, обеспеченной на packtpub.com
(
www.packtpub.com/files/
1   2   3   4   5   6   7   8   9   ...   17


написать администратору сайта