Visual Prog

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

Для самостоятельного изучения

Тестирование (опционально)

ДКР-КР для ЗФО

Полезные скрипты

#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);     } }