Занятие 8 Физика - Unity
Вспоминаем прошлое занятие
Физика - Unity
RigidBody
Работа с физикой в коде
Пишем физическое передвижение!
Joint
Основные типы Joint’ов
Hinge Joint
8.63M

Занятие 8. Зайцев, Unity

1. Занятие 8 Физика - Unity

2. Вспоминаем прошлое занятие

3.

Дверь-триггер
Создайте дверь (куб) с Box Collider + Is Trigger.
При входе игрока с тегом "Player":
Переместите дверь вверх (transform.position = transform.position
+ Vector3.up * 3).
При выходе — верните вниз. (запишите начальную позицию в
переменную и используйте её)
Используйте OnTriggerEnter и OnTriggerExit.

4. Физика - Unity

В реальной жизни всё подчиняется законам физики:
если вы уроните мяч, он падает, если толкнёте —
катится.
В Unity за физику отвечает система, которая
имитирует эти законы. Чтобы объект вёл себя как
настоящий, мы добавляем ему компонент Rigidbody.
Это как дать объекту "физическое тело", которое
может падать, сталкиваться или двигаться под
действием сил.

5. RigidBody

Пункт
Описание
Что делает
Когда использовать
Mass
Масса объекта в
килограммах
Влияет на инерцию,
силу реакции,
столкновения
Лёгкие: 0.1–1 Тяжёлые:
100–10000
Linear Damping
Сопротивление при
поступательном
движении
Замедляет скорость (как
воздух)
0 — без торможения
0.5–5 — реалистично
Angular Damping
Сопротивление при
вращении
Замедляет вращение
0.05 — стандарт 10 —
быстро останавливается
Automatic Center Of
Mass
Галочка
Автоматически
рассчитывает центр
массы по коллайдеру
Вкл. — для правильной
физики
Automatic Tensor
Галочка
Автоматически
рассчитывает инерцию
Вкл. — почти всегда
Use Gravity
Галочка
Включить земное
притяжение
Выкл. — для полёта,
космоса
Is Kinematic
Галочка
Отключить физику, но
оставить столкновения
Вкл. — для платформ,
дверей, анимации
Interpolate
Выпадающий список
Сглаживание движения
None — по умолчанию
Interpolate — плавнее
Collision Detection
Выпадающий список
Метод обнаружения
столкновений
Discrete — стандарт
Continuous — для
быстрых объектов
Constraints → Freeze
Position/Rotation
Галочки X, Y, Z
Запретить
движение/вращения
по осям
Например, Y — для 2Dплатформера

6. Работа с физикой в коде

7. Пишем физическое передвижение!

8.

Задание: Реализуй физический прыжок для персонажа.
Цель — сделать так, чтобы персонаж прыгал только с земли при
нажатии пробела.
Что нужно сделать:
Создайте персонажа -> Добавь на него Capsule Collider и
Rigidbody.Подсказка: Rigidbody — это то, что даёт физику.
Создайте скрипт PlayerJump.cs -> Прикрепите его к персонажу.
Объявите нужные переменные

9.

• В Start() получите Rigidbody и заблокируйте вращение. Подсказка:
чтобы персонаж не падал набок — заморозьте вращение по X и Z.
• В Update() проверяйте, стоит ли персонаж на земле -> Используйте
Physics.CheckSphere(). Подсказка: проверяйте от transform.position, с
радиусом groundDistance, по слою groundMask.
• Если нажат пробел и персонаж на земле — прыгай! Подсказка: сбрось
вертикальную скорость перед прыжком (rb.velocity.y = 0) и добавь
силу вверх через AddForce(..., ForceMode.Impulse).
• Создай слой "Ground"→ Назначь его всем платформам и полу.→ В
инспекторе скрипта выбери этот слой в groundMask.

10. Joint

Joint'ы соединяют два Rigidbody, позволяя создавать:
Цепи
Маятники
Двери
Машины
Рагдолл

11. Основные типы Joint’ов

Joint
Что делает
Пример
Fixed Joint
Жёстко склеивает два
Прицеп к машине
объекта
Hinge Joint
Вращение вокруг одной
Дверь, маятник
оси (как дверь)
Spring Joint
Пружина между
объектами
Подвеска, резинка
Character Joint
Сложное вращение
(для рагдолла)
Конечности персонажа
Configurable Joint
Максимальная
гибкость (все
параметры)
Роботы, сложные
механизмы

12. Hinge Joint

(делаем дверь)

13.

Задание: Вращающаяся платформа
При помощи HingeJoint сделайте вращающуюся платформу и
постройте из нескольких платформ уровень. Если игрок падает, то
выводите в консоль «Вы проиграли!»
Задание: Выстрел
Напишите два класса: Weapon и Bullet.
Weapon – класс оружия, он будет хранить в себе префаб пули и по
нажатию левой кнопки мыши (Input.GetMouseButtonDown(0)) будет
спавнить пулю на месте орудия (сделать Transform с местом спавна
пули).
Класс Bullet будет отвечать за реализацию полёта пули. В нём будут
хранится поля скорости и силы пули. В FixedUpdate сделать полёт
пули прямо. При попадании пули в объект (OnCollisionEnter)
уничтожить пулю. Если объект является игроком, нанести игроку
урон, который указан в соответствующей переменной.

14.

Конец!
English     Русский Rules