Содержание

Слайд 2

Повторення

Що таке клас в ООП?

Класи - це, по суті, шаблони, за якими

Повторення Що таке клас в ООП? Класи - це, по суті, шаблони,
можна створювати об'єкти. Кожен об'єкт містить дані та методи, котрі маніпулюють цими даними.

Слайд 3

Повторення

Що таке наслідування?

Наслідування – процес, завдяки якому один клас може отримати(наслідувати) властивості іншого

Повторення Що таке наслідування? Наслідування – процес, завдяки якому один клас може
класу і додавати риси характерні тільки для нього самого.

public class Monster : Unit{}

public class Zombie : Monster {}

Слайд 4

Повторення

Як реалізувати обмін даними для системи Scoring?

Слід створити скрипт ScoreManager, через який

Повторення Як реалізувати обмін даними для системи Scoring? Слід створити скрипт ScoreManager,
відбуватиметься обмін данними і створити в ньому public змінну:

public static int score;

Для того аби отримати змінну за межами класу, змінна повинна бути загальнодоступною і звертатися до неї слід через ім’я класу:

ScoreManager.score += 100;

Слайд 5

Анімація

На даному етапі, не залежно від напрямку руху, наш персонаж дивиться лише

Анімація На даному етапі, не залежно від напрямку руху, наш персонаж дивиться
вправо. Щоб при русі вліво він дивився в ту ж сторону, слід його відобразити по осі х (flip x):

Слайд 6

Анімація

В скрипті _player створимо об’єкт класу SpriteRenderer:

В методі void Awake() передамо створеному

Анімація В скрипті _player створимо об’єкт класу SpriteRenderer: В методі void Awake()
об’єкту компоненти SpriteRenderer :

private SpriteRenderer sprite;

sprite = GetComponent();

Оскільки в методі Run() відбувається зміна напрямку переміщення персонажу, то в нього слід внести незначні зміни:

sprite.flipX = direction.x < 0.0f;

direction.x>0.0f

direction.x<0.0f

Слайд 7

Анімація

Слід змінити ще скрипт _bullet, щоб, залежно від повороту персонажу, снаряди летіли

Анімація Слід змінити ще скрипт _bullet, щоб, залежно від повороту персонажу, снаряди
вправо/вліво:

private Vector3 direction;

Тепер ми не задаємо сталий напрям, а будемо змінювати його за допомогою властивості Direction. Для цього в скрипті _player змінимо метод Shoot():

private void Shoot() {
_bullet temp = Instantiate(bullet, new Vector3(transform.position.x+ (sprite.flipX ? -1.5f : 1.5f), transform.position.y, 0), bullet.transform.rotation) as _bullet;
temp.Direction = temp.transform.right*(sprite.flipX ? -1 : 1);
}

Слайд 8

Тернарна умовна операція

Тернарна умовна операція — в багатьох мовах програмування операція, яка повертає

Тернарна умовна операція Тернарна умовна операція — в багатьох мовах програмування операція,
свій другий або третій операнд в залежності від значення логічного виразу, заданого першим операндом :

sprite.flipX ? -1.5f : 1.5f

condition ? value_if_true : value_if_false

if(a return a;
else
return b;

Аналогічно

a

if (true)

if (false)

Слайд 9

Анімація

Якщо персонаж повернутий вліво (sprite.flipX = true) – генеруємо об’єкт bullet з

Анімація Якщо персонаж повернутий вліво (sprite.flipX = true) – генеруємо об’єкт bullet
відступом -1.5f (за персонажем):

_bullet temp = Instantiate(bullet, new Vector3(transform.position.x + (sprite.flipX ? -1.5f : 1.5f), transform.position.y, 0), bullet.transform.rotation) as _bullet;

temp.Direction = temp.transform.right * (sprite.flipX ? -1 : 1);

Якщо персонаж повернутий вліво (sprite.flipX = true) – змінимо метод Direction на -1, звернувшись до нього через об’єкт temp:

Слайд 10

Анімація

Виділимо нашого героя і відкриємо вікно анімації:

Анімація Виділимо нашого героя і відкриємо вікно анімації:

Слайд 11

Анімація

Скачати заготовки для анімації героя можна із сайту opengameart.org, або ж скачати

Анімація Скачати заготовки для анімації героя можна із сайту opengameart.org, або ж
SpriteSheet і за допомогою Sprite Editor «порізати» його:

Слайд 12

Анімація

Після того, як ви порізали на слайди – розділіть їх по окремим

Анімація Після того, як ви порізали на слайди – розділіть їх по
папкам (Run, Jump, Shoot, тощо):

У вікні анімації натисніть Create та оберіть місце, для зберігання кліпів анімації:

Слайд 13

Анімація

Натисніть Add Property та, прокрутивши вниз, оберіть Sprite :

Анімація Натисніть Add Property та, прокрутивши вниз, оберіть Sprite :

Слайд 14

Анімація

Перетягніть слайди почергово на часову шкалу. Натисніть play для перегляду:

Анімація Перетягніть слайди почергово на часову шкалу. Натисніть play для перегляду:

Слайд 15

Анімація

На герої з’явиться компонент Animator:

Анімація На герої з’явиться компонент Animator:

Слайд 16

Анімація

У вас в папці Animations має вийти декілька файлів анімації та Animator:

Подвійним

Анімація У вас в папці Animations має вийти декілька файлів анімації та
кліком відкрийте аніматор, ви побачите створені вами анімації, задайте переходи між ними через блок Any State (ПКМ -> Make Transition):

Слайд 17

Анімація

Нам слід створити керуючий параметр state:

Анімація Нам слід створити керуючий параметр state:

Слайд 18

Анімація

Виділіть стрілочку, та задайте умову переходу в стан Idle - State =

Анімація Виділіть стрілочку, та задайте умову переходу в стан Idle - State
0 і зніміть галочку із Can Transist to Self:

Слайд 19

Анімація

В скрипті _player на початку створюємо об’єкт Animator, в методі Awake передаємо

Анімація В скрипті _player на початку створюємо об’єкт Animator, в методі Awake
йому компоненти аніматора:

void Awake()
{
animator = GetComponent();
}

private Animator animator;

Слайд 20

Анімація

В скрипті _player (поза класом!!), додамо перелік (enumerator):

public enum CharState
{
Idle,
Run,

Анімація В скрипті _player (поза класом!!), додамо перелік (enumerator): public enum CharState
Jump
}

Enumerator присвоїть константі Idle – значення 0, Run – 1, Jump-2. Створіть уже всередині класу, на початку програми, властивість State:

private CharState State
{
get { return (CharState)animator.GetInteger("state"); }
set { animator.SetInteger("state", (int)value); }
}

Слайд 21

Анімація

Змінимо метод FixedUpdate:

Тобто, якщо торкаємось землі – стан Idle, в іншому випадку

Анімація Змінимо метод FixedUpdate: Тобто, якщо торкаємось землі – стан Idle, в
– стан Jump.

if (isTouchingGround) State = CharState.Idle;
else State = CharState.Jump;

Аналогічно при виклику функції Run() змінимо стан на Run:

if (Input.GetButton("Horizontal"))
{
Run();
if (isTouchingGround)
{
State = CharState.Run;
}
}

Имя файла: Les_17.pptx
Количество просмотров: 26
Количество скачиваний: 0