ФорумРазработкаРазработка игрUnity → Принципы реализации разнообразной игровой механики в Unity (теория + примеры)

Принципы реализации разнообразной игровой механики в Unity (теория + примеры)

  • abasov90

    Сообщения: 10 Репутация: N Группа: Кто попало

    Spritz 5 августа 2015 г. 12:17

    Стрельба

    Для реализации стрельбы нам нужно:

    1. Модель патрона
    2. Модель оружия

    Как реализовать выстрел?
    1. Нужно поместить модель патрона (точнее игровой объект в иерархии) в начальную точку, те координаты откуда патрон начнет свое движение. Для примера ствол оружия, его начало\конец.
    2. Применить к патрону силу, благодаря которой он будет двигаться.
    3. Воспроизвести (симулировать) вспышку от выстрела и дымку. Можно к примеру воспользоваться системой частиц.
    4. При столкновении патрона\или по таймеру удалить его со сцены.
    5. Воспроизвести звук выстрела.

    Обычно в Unity используются префабы игровых объектов. Префабы это болванки\копии\шаблоны какого либо игрового объекта. В данном случае будет разумно создать для патрона префаб и при выстреле делать его копию.

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

    
    Transform patron = (Transform)Instantiate(patronPrefab, patronStartPoint.transform.position, patronStartPoint.transform.rotation);
    patron.GetComponent<Rigidbody>().AddForce(patronStartPoint.transform.forward * 10);
    

    Используя Instantiate мы клонировали префаб patronPrefab и теперь он у нас появился на сцене по координатам patronStartPoint.transform.position и получил свойства вращения от patronStartPoint.transform.rotation.

    patronStartPoint можно задать заранее, создав к примеру пустой объект на сцене и через инспектор получив на него ссылку.
    Также patronStartPoint.transform.position можно было задать в самом скрипте в ручную так new Vector3(x,y,z) где xyz координаты стартовой точки выстрела.

    Далее мы получили Rigidbody нашего клона patron patron.GetComponent<Rigidbody>() используя GetComponent и применили к нему силу AddForce.

    Чуть позже допишу, если интересно...

  • kostyl

    Сообщения: 5203 Репутация: N Группа: Джедаи

    Spritz 5 августа 2015 г. 12:55, спустя 38 минут 38 секунд

    @abasov90, +1

  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 6 августа 2015 г. 3:41, спустя 14 часов 45 минут 43 секунды

    @abasov90, +1 на выходных попробую запустить SDK и написать что-то простое

    adw/0
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 6 августа 2015 г. 13:03, спустя 9 часов 22 минуты 28 секунд

    @abasov90, +1 в следующей жизни попробую запустить SDK и написать что-то простое

Пожалуйста, авторизуйтесь, чтобы написать комментарий!