Камера з виглядом від третьої особи – РОЗРОБКА ІГОР ДЛЯ ОС ANDROID

Другий тип камери, який часто можна зустріти в іграх, – це камера з видом від третьої особи Вона визначається наступними параметрами: позиція в просторі верхній вектор розглядайте його як стрілку, що виходить з вершини вашого черепа і вказує в тому ж напрямку, що й вона позиція погляду в просторі або в якості альтернативи – вектор напрямку ми будемо використовувати перший варіант полі видимості в градусах співвідношення сторін вікна перегляду відстані ближньої і дальньої площин відсікання

Єдина відмінність від ейлерову камери полягає в способі представлення орієнтації камери У цьому випадку ми визначаємо її як верхній вектор і позиція погляду

Напишемо допоміжний клас для цього типу камери (лістинг 1111)

Лістинг 1111 Клас LookAtCamerajava, проста камера з видом від третьої особи без особливих вишукувань

Нічого дивного Ми просто зберігаємо значення positi on, up і 1ookAt як екземпляри класу Vector3 поряд з параметрами перспективної проекції, які також використовувалися і для EulerCamera На додаток ми надаємо кілька методів, які повертають значення параметрів, тому можемо модифікувати атрибути камери Єдиний вартий нашої уваги метод – це setMatrices Але навіть він нам вже знайомий Ми спочатку встановлюємо матрицю проекції, грунтуючись на полі видимості, співвідношенні сторін і відстаней до ближньої і дальньої площин відсікання Далі встановлюємо модельно-видову матрицю таким чином, щоб вона містила позицію камери і матрицю орієнтації за допомогою методу gl uLookAtC Це зробить матрицю, дуже схожу на ту, яку ми створили власноруч у прикладі Eul erCamera Це також поверне обєкти навколо камери Однак чудовий інтерфейс методу gl uLookAt дозволяє нам не робити такі дурні речі, як інвертування позицій або кутів

Фактично використання цієї камери схоже на застосування камери Ейлера Все, що нам потрібно, – створити вектор напрямку, віднявши позицію камери від точки, на яку вона спрямована, і нормалізувавши отриманий результат Далі ми просто повертаємо цей вектор на кути повороту навколо осей хну

Нарешті, ми встановлюємо нову позицію погляду на позицію камери і додаємо вектор напрямку

Обидва способи створять однакову матрицю трансформації Ці способи відрізняються лише обробкою орієнтації камери

Ми утримаємося від написання прямого прикладу з використанням класу LookAtCamera, оскільки його інтерфейс ідеально простий Ми будемо застосовувати його в останній грі, яку розглянемо в е, де камера буде слідувати за невеликим милим космічним кораблем Якщо ж ви хочете дізнатися, на що здатний цей клас, додайте його в приклад Li ghtTest, який ми написали раніше, або модифікуйте приклад Eul erCameraTest таким чином, щоб клас LookAtCamera використовувався як камера від першої особи, що ми позначили в попередньому розділі

Джерело: Mario Zechner / Маріо Цехнер, «Програмування ігор під Android», пров Єгор Сидорович, Євген зазноби, Видавництво «Пітер»

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*