Intro
Визуальное программирование — это способ создания программы для ЭВМ путём манипулирования графическими объектами вместо написания её текста (кода). В рамках курса мы будем изучать Unity — игровой движок, на котором большую часть механик / интерфейсов / эффектов и т.д. можно реализовать визуальными средствами разработки. А скрипты (сценарии взаимодействия между объектами) реализуются на языке C#. Начнём с основ, и будем изучить визуальное программирование на примере разработки интерактивного приложения на движке Unity. Welcome -_^:
Student stat
Лекции
- Lecture #1 — Основы визуального программирования
- Lecture #2 — Возможные проекты на Unity
- Lecture #3 — Базовый скриптинг в Unity и C#
- Lecture #4 — Физика в Unity. Rigidbody
- Lecture #5 — Физика в Unity. Colliders
- Lecture #6 — Физика в Unity. Ragdolls
- Lecture #7 — Управление физическими слоями
- Lecture #8 — Правильное приложение силы в Unity. AddForce
- Lecture #9 — Перемещение & вращение AddTorque
- Lecture #10 — События OnCollision
- Lecture #11 — События OnTrigger
- Lecture #12 — Работа со звуком в Unity
- Lecture #13 — Освещение в Unity
- Lecture #14 — Physics.Raycast
- Lecture #15 — Центр масс
- Lecture #16 — Физические модели на системах джоинтов и распределения весов
Практические работы
- Workshop #1 — Компонент физики Rigidbody в Unity
- Workshop #2 — Возможности коллайдеров в Unity
- Workshop #3 — Механика тряпичной куклы в Unity
- Workshop #4 — Физические слои в Unity
- Workshop #5 — Разработка простой игровой механики
- Workshop #6 — Интерфейс пользователя
- Workshop #7 — Механика выстрела с обратной связью в UI
Для самостоятельного изучения
- Playlist на Yoytube-канале по созданию игры Zombie Land
Тестирование (опционально)
ДКР-КР для ЗФО
- Разработка игры — Apple Picker
Полезные скрипты
#1 Разбиение кубика на множество маленьких объектов
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeBreaker : MonoBehaviour { public GameObject cubePiecePrefab; public float explodeForce = 500f; private void OnCollisionEnter(Collision collision) { if (collision.gameObject.CompareTag("Ground")) { ExplodeCube(); } } private void ExplodeCube() { for (int x = 0; x < 4; x++) { for (int y = 0; y < 4; y++) { for (int z = 0; z < 4; z++) { Vector3 piecePosition = transform.position + new Vector3(x, y, z) * 0.5f; GameObject piece = Instantiate(cubePiecePrefab, piecePosition, Quaternion.identity); Rigidbody pieceRigidbody = piece.GetComponent<Rigidbody>(); pieceRigidbody.AddExplosionForce(explodeForce, transform.position, 5f); } } } Destroy(gameObject); } }