Як би я реалізував нескінченну дорогу, на яку біжить гравець?


17

Я хочу створити ілюзію, що людина біжить довгою дорогою, тобто ця картинка

http://camlinecambridgelimited.web.officelive.com/images/road%20graphic1.jpg

Якщо ви грали в Temple Run на iPhone, це той самий принцип, але замість храму це звичайна дорога.

Я хочу знати, як це реалізується. Наприклад, чи я просто повторюю це зображення дороги в циклі?

Відповіді:


16

Я намалював би один текстурований квадроцикл на землі (тобто лежачи на площині XZ), настільки ж великим, як має бути видима область, а потім пограти з координатами текстур вершин (з режимом адресації текстури, встановленим для обгортання ), щоб автоматично подбайте про повторення текстури та прокручування текстур .

  1. Для повторення замість того, щоб встановити вертикальну координату текстури від [0 до 1], встановіть її від [0 до N], де N - кількість разів, за яку ви хочете повторити текстуру. Відрегулюйте це значення залежно від того, наскільки високий ваш квадроцикл порівняно з висотою текстури.
  2. Для прокрутки я просто прокручую вертикальну координату текстури, так що замість [0 до N] вона буде варіюватися від [inc до N + inc], причому значення inc збільшується або зменшується кожен кадр. Час від часу я загорнути вкл назад в початок, щоб запобігти переповнення / спустошення.

EDIT Я просто спробував реалізувати це саме так, як я описав (але в XNA), і це спрацювало досить добре. Дивіться це відео демонстрації. Вихідний код тут для тих, хто цікавиться.


Наприклад, з N, рівним 3, ви отримаєте щось на зразок зображення нижче (я пофарбував середній розділ у червоний колір, щоб ви могли бачити, де відбувається повторення). Тоді, просто змінюючи значення inc , змусить прокрутити дорогу в ту чи іншу сторону, залежно від того, зробили ви її чи зменшили.

введіть тут опис зображення


Ця ж техніка може бути використана для підробки анімації танкових ниток. Звичайно, це не буде
корисно,

1

Якщо ви хочете зробити нескінченну дорогу «справжньою», ви створюєте три поверхні і обводите їх петлею, коли кожна поверхня рухається поза зору. Помістіть поверхні в кінці світу і перемістіть їх у напрямку до камери. Коли найближчий кінець відходить від камери, відновіть її положення до кінця найдальшої поверхні.

Якщо ви хочете реалізувати його як спрайт з ілюзією руху, вам потрібно створити ряд різних текстур, які повинні виглядати приблизно так:

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


0

Повторення зображення - хороша ідея. З'ясуйте, скільки повторень потрібно бачити на екрані, і намалюйте зображення стільки разів. Коли прокручується дорога, з’явиться точка, коли одне зображення повністю позаду камери і, таким чином, невидиме. У цей момент ви хочете перемістити це зображення з-за своїх ніг до дальнього кінця вашої кінцевої смужки зображення.

Поки ми це робимо, ви отримаєте найкращий ефект від цього, наслідуючи нестабільну перспективу бігаючої людини. Запишіть свій фільм, який працює з точки зору ваших очей, і вивчіть його.


2
Це насправді не працює, оскільки його образ перспективний. Йому знадобляться різні зображення, щоб грати як анімація.
Боббі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.