Главная страница
Навигация по странице:

  • Play и наблюдая объект в представлениях Сцены или Игры. Когда Вы удовлетворены, нажмите кнопку Play снова, чтобы прекратить проверять. Экономия как prefab

  • Prefab

  • GameObject |, Создают Пустой. Выберите этот новый объект в Иерархии по умолчанию, это назовут GameObject)

  • First Person Controller

  • Transform (преобразовать, поместите в ценности 352

  • , но они могут быть изменены на Вашем досуге, собираясь Редактировать | Проектные Параметры настройки

  • Create

  • , Экономят и возвращаются к Unity. Сценарий и назначение Variables

  • Автор 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
    страница9 из 17
    1   ...   5   6   7   8   9   10   11   12   ...   17

    (www.packtpub.com/files/code/8181_Code.zip
    ). Определите местонахождение пакета по имени CoconutGame.unitypackage. Импортируйте этот пакет, идя в Активы | Пакет Импорта. Проведите к файлу, Вы извлекли, выбираете его, и подтверждаете Импорт У Вас должна теперь быть папка в Вашей Проектной группе под названием Кокосовая Игра, содержащая следующее Кокосовая структура изображения Структура перекрестия Четыре звуковых скрепки Две трехмерных модели - одна вызванная платформа, и другая вызванная цель Папка Материалов для трехмерных моделей Создание текстурированного кокосового ореха Чтобы применить кокосовую структуру, мы должны будем сделать новый материал, чтобы применить это к. На Проектной группе, нажмите на кнопку Create, и от опускаться меню, которое появляется, выбрать Материал. Переименуйте новый материал, который Вы сделали к Кокосовой Коже, нажимая Возвращение (Mac) или F2 (PC), и перепечатывание. Чтобы применить структуру к этому материалу, просто drag and drop перетащили и опустили) кокосовую структуру от Проектной группы к пустому квадрату направо от Основы (RGB), устанавливающий для материала в Инспекторе. Когда это сделано, Вы должны видеть предварительный просмотр материала в окне в более низкой половине Инспектора, как показано в следующем скриншоте:

    147 Помните, что этот предварительный просмотр просто демонстрирует внешность материала на сфере - это - неплатеж для предварительных просмотров материала Unity и не имеет никакого отношения к факту, что мы будем использовать это на сферическом объекте. Затем, мы должны применить Кокосовый материал Кожи к Кокосовому объекту игры, который мы поместили в нашу сцену. Чтобы сделать это, мы просто drag and drop (перетащили и опустили) материал от окна Project или до имени объекта в Иерархии или к объекту непосредственно в представлении Сцены. Добавление физики Теперь, потому что наш Кокосовый объект игры должен вести себя реалистично, мы должны будем добавить компонент Rigidbody, чтобы призвать двигатель физики для этого объекта. Выберите объект в Иерархии и пойдите в Компонент | Физика | Rigidbody. Это добавляет компонент Rigidbody, который применит силу тяжести. В результате, когда игрок бросает объект вперед, он упадет в течение долгого времени, поскольку мы ожидали бы это кв действительности. Установки по умолчанию компонента Rigidbody можно оставить

    148 неприспособленными, таким образом Вы не должны будете изменять их на данном этапе. Мы можем проверить это кокосовые падения и рулоны теперь, нажимая кнопку Play и наблюдая объект в представлениях Сцены или Игры. Когда Вы удовлетворены, нажмите кнопку Play снова, чтобы прекратить проверять. Экономия как prefab Теперь, когда наш кокосовый объект игры полон, мы должны будем сохранить его как prefab в нашем проекте, чтобы гарантировать, что мы можем иллюстрировать примерами его использующий код так много раз, как нам нравится, вместо того, чтобы просто иметь единственный объект. На Проектной группе, выберите папку Prefab, и затем нажмите на кнопку
    Create и выберите Prefab. Переименуйте новый заранее приготовленный Кокосовый Prefab. Drag and drop (перетащили и опустили) Кокосовый объект игры от Иерархии на новый prefab в Проектной группе, чтобы спасти это, и затем удалить оригинальную копию со сцены, выбирая это в Иерархии и нажимая Команду + Клавиша Backspace
    (Mac) или Удалить

    (PC). Создание объекта Launcher
    Поскольку мы собираемся позволить нашему игроку бросать кокосовые prefab, мы только что создали, мы будем нуждаться в двух вещах сценарий, чтобы обращаться с экземпляром и пустым объектом игры, чтобы действовать как контрольная точка для позиции, чтобы создать объекты в мире. В действительности, когда мы бросаем шар (стиль сверхруки), он входит в представление стороне нашей головы, поскольку наша рука выступает вперед, чтобы выпустить шар. Поэтому, мы должны поместить объект только за пределами области нашего игрока представления и удостовериться, что это будет следовать везде, где они смотрят. Поскольку представление игрока обработано Главным детским объектом Камеры Первого Диспетчера Человека, делая пустой объект, который ребенок этого позволит этому перемещать с камерой, поскольку ее позиция будет всегда оставаться относительно ее родителя. Начните, создавая новый пустой объект игры в Вашей сцене, идя в
    GameObject |, Создают Пустой. Выберите этот новый объект в Иерархии по умолчанию, это назовут GameObject), и переименуйте это Пусковая установка. Затем, расширьте объект First Person Controller, нажимая на

    149 серую стрелку налево от ее имени в Иерархии. Теперь drag and drop перетащили и опустили) объект Launcher на Главную Камеру так, чтобы это стало ребенком этого - Выбудете знать, что Вы сделали это правильно, если серая стрелка появляется рядом с Главной Камерой, указывая, что это может быть расширено, чтобы показать ее детские объекты. Объект
    Launcher заказан ниже этого, как показано в следующем скриншоте: Делая этот объект, ребенок Главной Камеры будет подразумевать, что это перемещается и вращается с ее родителем, но это все еще нуждается в перерасположении. Начните, перезагружая позицию объекта Launcher в компоненте Transform (преобразовать) в Инспекторе. Это может быть сделано или заменяя все ценности 0, или экономить время, Вы можете использовать кнопку Cog, чтобы перезагрузить, выбирая Позицию Сброса изменю популярности, как показано в следующем скриншоте: Кнопка Cog действует как быстрый способ выполнить операции на Я
    " ( Компоненты Ли Выбудете видеть один рядом с каждым компонентом в Инспекторе.
    Они также полезны, поскольку они позволяют Вам удалять компоненты Вы не более длинная потребность или которые были добавлены по ошибке. Урегулирование ребенка Пусковой установки возражает против позиции
    0 средств, это находится точно в центре (та же самая позиция) как ее родитель. Конечно, это не то, что мы хотим, но это - хорошая отправная точка, чтобы пойти от. Мы не должны оставить пусковую установку в этой позиции по двум причинам Когда кокосовые орехи брошены, они, казалось бы, прибывали бы из головы игрока, и это будет выглядеть странным. Когда Вы иллюстрируете примерами объекты, Вы должны гарантировать, что они не созданы в позиции, где их коллайдер пересечется с другим коллайдером, потому что это вынуждает

    150 двигатель физики выдвинуть коллайдеры обособленно и могло прервать силу, примененную, бросая кокосовый орех. Чтобы избежать этого, мы просто должны продвинуть объект Launcher и направо от его настоящего положения. В компоненте Transform преобразовать, набор X и позиции Z к ценности 1. Ваш объект Launcher должен теперь быть помещен в пункте, где Вы ожидали бы выпускать объект, брошенный правой рукой характера игрока, как показано в следующем скриншоте: Наконец, чтобы заставить брошенный кокосовый орех направиться к центру нашего взгляда, мы должны вращать пусковую установку немного вокруг Оси Y. При Вращении в компоненте Transform (преобразовать, поместите в ценности 352, чтобы вращать это 8 степенями. Затем, мы будем нуждаться к сценарию в экземпляре кокосового ореха и его толчка, когда игрок нажмет кнопку огня. Броски кокосового ореха Scripting Поскольку мы должны начать кокосовые орехи, когда игрок нажмет огонь, мы должны будем проверить, нажимают ли они ключ - привязанный к входу в Unity - каждая структура. Ключи и топоры/кнопки мыши привязаны, чтобы не выполнить своих обязательств названные входами во Входном Менеджере Unity, но они могут быть изменены на Вашем досуге, собираясь Редактировать
    | Проектные Параметры настройки
    | Вход. Сделайте это теперь, затем расширьте Топоры, щелкая серой стрелкой налево от нее, и затем наконец расширьте вход оси по имени Fire1.

    151 Три решающих области, чтобы наблюдать вот являются параметром Названия, Положительным параметром, и Высоким звуком Положительный параметр. Мы будем обращаться к этой оси ее именем, и Положительными и Положительным Высоким звуком являются фактические ключи непосредственно, чтобы прислушаться. Новые топоры могут быть созданы, просто увеличивая ценность Размера наверху Входа, Получающегося менеджером в новом добавляемом входе, который Вы можете тогда настроить. Для игрока, чтобы начать кокосовые орехи в целях - который мы поместим в нашу сцену позже - у них должен быть сценарий, который осуществляет два ключевых шага Экземпляр объекта Coconut, который будет брошен в прессу кнопки огня Назначение скорости к компоненту Rigidbody продвинуть кокосовый орех вперед, как только это было создано Чтобы достигнуть этого, сначала создайте новый файл JavaScript: Выберите папку Сценариев в Проектной группе Нажмите на кнопку Create, опускаются меню и выбирают JavaScript Переименуйте NewBehaviourScript к CoconutThrow, нажимая Возвращение
    (Mac) или F2 (PC)

    152 Начните это в редакторе сценария, щелкая два раза его изображением Проверка игрока введена Учитывая, что мы должны прислушаться к нажатиям клавиш игрока каждая структура, мы должны написать наш код для пусковой установки в
    Update () function. Переместите заключительную правильную вьющуюся скобу этого Functions вниз несколькими линиями, и затем добавьте следующий если утверждение, чтобы прислушаться к Fire1 keypress: if(Input.GetButtonUp("Fire1")){ } Это проверяет Входной Classes и ждет кнопок, привязанных к входу
    Fire1 Левая клавиша CTRL и оставленная кнопка мыши, чтобы быть выпущенным. В это, если бы утверждение, мы должны будем поместить действия, мы хотели бы, чтобы сценарий выступил, когда игрок выпускает любую кнопку.
    Во-первых, мы должны играть звук, который действует как основанная на аудио обратная связь для того, чтобы бросить. Если бы мы создавали стреляющую игру, то это вероятно было бы звуком запускаемого оружия. Однако, в этом случае, у нас просто есть тонкий звук whooshing, чтобы представить запуск кокосового ореха. Игра звука обратной связи Мы будем нуждаться в Variables, чтобы представить звуковую скрепку, которую мы должны играть, так поместите следующий общественный
    Variables участника в очень главный из сценария прежде, чем мы продолжим var throwSound : AudioClip; Это создает то, что известно как общественный Variables участника, что означает, что мы будем в состоянии назначить фактическую звуковую скрепку на этот Variables, используя Инспектора, как только мы закончены, сочиняя этот сценарий. Теперь, давайте настраивать игру этой звуковой скрепки в нашем если утверждение. После вводной вьющейся скобы, добавьте следующую линию audio.PlayOneShot(throwSound); Это будет играть звук, поскольку игрок выпускает кнопку Fire1.
    Instantiate (Проиллюстрировать) кокосового ореха Затем, мы должны создать фактический кокосовый орех непосредственно, также в пределах потока если утверждение. Учитывая, что мы создали кокосовый орехи сохранили его как prefab, мы должны установить другой общественный Variables участника так, чтобы мы могли назначить наш

    153 prefab на Variables в Инспекторе позже. Наверху сценария, ниже Вашей существующей throwSound линии Variables, помещают следующее var coconutObject : Rigidbody; Это помещает в общественном Variables участника с типом данных
    Rigidbody. Хотя наш кокосовый орех сохранен как заранее приготовленный актив, когда мы будем иллюстрировать примерами его, мы будем создавать объект игры с Rigidbody, приложенным в нашей сцене, и поэтому типе данных. Это гарантирует, что мы не можем тянуть объект non-rigidbody к этому Variables в Инспекторе. Строго печатанием данных к
    Rigidbody это также означает, что, если бы мы желаем обратиться к компоненту Rigidbody этого объекта, тогда мы не должны были бы использовать GetComponent () команда, чтобы выбрать компонент
    Rigidbody сначала - мы можем просто написать код, который говорит непосредственно с Rigidbody. Теперь, в, если утверждение в Update (), поместите следующую линию ниже существующей звуковой линии var newCoconut : Rigidbody = Instantiate(coconutObject, transform.position, transform.rotation); Здесь, мы устанавливаем частный Variables, вызванный, это является частным, потому что это в пределах Update () function, итак не должно быть неявно написано с частной приставкой. В этот Variables мы передаем создание (Экземпляр) нового и поэтому тип данных. Помните, что три параметра Instantiate (Проиллюстрировать) (), объект, позиция, и вращение. Выбудете видеть, что мы использовали общественный Variables участника, чтобы создать случай нашего prefab и затем унаследовали позицию и вращение от объекта, этот сценарий приложен к - объект Launcher. Обозначение случаев Всякий раз, когда Вы создаете объекты вовремя времени выполнения с,
    Instantiate (Проиллюстрировать) (), Unity берет название prefab и следует, это с текстом "клонируется, называя новые случаи. Поскольку это - скорее неуклюжее название к ссылке в коде - который мы должны будем сделать для наших целей позже - мы можем просто назвать случаи, которые созданы, добавляя следующую линию ниже линии, которую мы только добавили newCoconut.name = "coconut"; Здесь, мы просто использовали имя переменной, которое мы создали, который посылает к новому случаю prefab, и используемому точечному синтаксису обратиться к параметру названия. Назначение скорости

    154 В то время как этот Variables создаст случай нашего кокосового ореха, наш сценарий еще неполон, поскольку мы должны назначить скорость на недавно созданный кокосовый орех также. Иначе, это будет просто создано и падение к основанию. Чтобы позволить нам регулировать скорость брошенного кокосового ореха, мы можем создать другой общественный
    Variables участника наверху нашего сценария, чтобы обращаться с этим. Чтобы дать нам точность, мы сделаем этот Variables типом данных плавания, разрешая нам напечатать в ценности с десятичным разрядом var throwForce : float; Теперь, ниже Instantiate (Проиллюстрировать) () линия в Вашем, если утверждение, добавьте следующую линию newCoconut.rigidbody.velocity = transform.
    TransformDirection(Vector3(0,0, throwForce)); Здесь, мы ссылаемся на недавно иллюстрировавший примерами кокосовый орех его именем переменной, затем используя точечный синтаксис, чтобы обратиться к компоненту Rigidbody, и затем устанавливая скорость для твердого тела. Мы установили скоростное использование, преобразовывают.
    TransformDirection, поскольку эта команда создает направление от местного до мирового места. Мы должны сделать это, потому что наша Пусковая установка будет постоянно перемещать и никогда не стоять перед последовательным направлением. Ось Z мира действительно стоит перед последовательным направлением. Назначая скорость, мы можем взять определенную местную ось просто, назначая это ценность в Vector3. Это - то, почему у насесть ценности 0 в X и
    Y параметрах Vector3. Обеспечение составляющего присутствия Если мы желаем охранять против ошибок, следующих из попытки обратиться к компоненту, который не приложен, то мы можем проверить, существует ли компонент, и добавлять это, если это не присутствует. Например, с нашим rigidbody, мы могли проверить новый случай newCoconut для компонента Rigidbody, говоря if(!newCoconut.rigidbody) { newCoconut.AddComponent(Rigidbody); Здесь мы говорим, что, если нет никакого rigidbody, приложенного к этому случаю Variables, то добавьте компонент того типа. Мы не говорим 'rigidbody', просто помещая восклицательный знак перед утверждением в если обычная практика условия в scripting. Поскольку мы уже подготовили наш prefab с rigidbody, мы не должны делать это в этом случае.

    155 Охрана столкновений В то время как мы настроили нашу Пусковую установку в позиции, которая вдали от коллайдера характера игрока (Коллайдер Диспетчера) - мы должны все еще включать эту последнюю часть кода, чтобы охранять против иллюстрирования примерами новых кокосовых орехов, которые случайно пересекают коллайдер нашего игрока. Это может быть сделано, используя IgnoreCollision () команда Classes Физики. Эта команда типично берет три аргумента
    IgnoreCollision(Collider A, Collider B, whether to ignore or not); В результате мы просто должны накормить это этими двумя коллайдерами, которые мы не хотим, чтобы двигатель физики реагировал на, и установил третьи параметры к истинному. Добавьте следующую линию ниже последней линии, которую Вы добавили
    Physics.IgnoreCollision(transform.root.collider, newCoconut.collider, true); Здесь мы находим коллайдер характера игрока при использовании transform.root - это просто находит окончательный родительский объект любых объектов, к которым присоединена Пусковая установка. В то время как Пусковая установка
    - ребенок объекта Main Camera, у самой камеры нет коллайдера. Так, мы действительно хотим найти объект, к которому это присоединено - Первый Диспетчер Человека, которого мы находим при использовании transform.root. Тогда мы просто проходим в имени переменной newCoconut, который представляет наш недавно иллюстрировавший примерами кокосовый орех. Для обоих параметры мы используем точечный синтаксис, чтобы обратиться к компоненту коллайдера. Здесь мы должны были найти окончательного родителя этих объектов, но если Вы, которых я только отсылаю к родителю объекта, Вы можете обратиться к этому использующий I transform.parent. Я Включая Звуковой Исходный компонент Наконец, поскольку Ваше действие броска вовлекает аудио игры, мы можем использовать команду @script, чтобы заставить Unity включать Звуковой Исходный компонент, когда этот сценарий добавлен к объекту. Ниже закрытия Update () function, который является в самом основании сценария, добавляет следующая линия
    @script RequireComponent (AudioSource) Экономят Ваш

    156 сценарий теперь, идя в Файл
    |, Экономят и возвращаются к
    Unity. Сценарий и назначение Variables
    Гарантируйте, что объект Launcher все еще отобран в группе Иерархии, и затем идти в Компонент | Сценарии | Кокосовый Бросок от главных меню. Unity добавит сценарий, который Вы только что написали как компонент, также как Звуковой Исходный компонент Выбыли обязаны добавлять. Вы должны заметить, что общественные variables участника сценария
    CoconutThrow должны быть назначенными ценностями/активами, поскольку мы не делали этого вручную в сценарии. Два общественных variables участника, которые требуют, чтобы активы были назначены на них, являются Звуком Броска и Кокосовым Объектом - Вы можете легко определить это, поскольку они указывают тип данных, который был установлен для них в сценарии. Третий общественный Variables участника, хотя данные, напечатанные в сценарии, просто предоставляет Вам неплатеж, оценивает в соответствующем числовом значении формата
    1   ...   5   6   7   8   9   10   11   12   ...   17


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