Знакомство с Unity3D

Мне всегда была интересна тема программной реализации (демонстрации) законов физики: как взаимодействуют тела. Какое-то бледное подобие даже пытался реализовать на флеш. Однако, если делать что-то более серьезное, то лучше использовать специальные движки.

Подумав, я остановился на Unity3D – одной из самых популярных платформ разработки приложений, в том числе и в 3D формате. Вот что получилось у меня в итоге после недолгого разбирательства с основами:

Скачать Unity3D можно отсюда – получим сетевой установщик. Выбирайте галочками, что вам требуется, особо не волнуйтесь – в любой момент его можно будет запустить снова и скачать недостающие элементы. Итак, качаем, устанавливаем, регистрируемся, начинаем новый проект 3D.

Сложного ничего нет. В проекте по умолчанию у вас уже есть два объекта — Main Camera (камера) и Directional Light (источник света). Выберите Game Object –> 3D Object -> Plane и Game Object –> 3D Object -> Cube. Теперь у нас есть кубик над плоскостью и, собственно, сама плоскость. Если запустить проект, то ничего не произойдет: выведется статичная картинка. Внесем немного динамики.

Выберем наш куб и Component -> Physic -> Rigidbody. Этим мы сделал куб твердым телом. Теперь после запуска он упадет на плоскость. Далее создаем снизу в Assets — > Create – Physic Material -> назовем, к примеру, rubber1 – это будет материал. Можно играться с разными параметрами, добиться скольжения, упругости и так далее.

Далее также внизу создаем C# Script, открываем его в каком-нибудь редакторе ( по умолчанию идет MonoDevelop – признаться жутко глючная штука) удаляем созданный по умолчанию код и вставляем свой:

    1. using UnityEngine;
    2. using System.Collections;
    3.  
    4. public class NewBehaviourScript : MonoBehaviour {
    5.  
    6. void Start () {
    7. Rigidbody rb = GetComponent();
    8. }
    9. void Update () {
    10. if (Input.GetKeyUp( KeyCode.Space )) {
    11. GetComponent().material.color = Color.red;
    12. }
    13. }
    14. void OnCollisionEnter() {
    15. Debug.Log(«Oops!»);
    16. }
    17. }

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

Таким образом, если не хочется изобретать велосипед, а хочется сразу работать с 3D, то Unity3D прекрасно подойдет. Платформа не выглядит сырой и возможно в будущем, я напишу серию статей, посвященной разработке на ней. Если интересно посмотреть на результат на своем компьютере, то вот файл программы — теоретически должно запуститься на любой Windows со вторым нет фреймворком на борту.