Bagaimana saya menerapkan jalan tanpa akhir yang dijalankan pemain?

17

Saya ingin membuat ilusi bahwa seorang pria berlari di jalan yang panjang yaitu foto ini

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

Jika Anda telah memainkan Temple Run di iPhone, itu adalah prinsip yang sama, tetapi alih-alih kuil itu adalah jalan yang normal.

Saya ingin tahu bagaimana ini diterapkan. Misalnya, apakah saya hanya mengulangi gambar jalan ini dalam satu lingkaran?

Salomo
sumber

Jawaban:

16

Saya akan menggambar quad bertekstur tunggal di tanah (yaitu berbaring di bidang XZ), sebesar area yang terlihat, dan kemudian bermain-main dengan koordinat tekstur simpul (dengan mode pengalamatan tekstur diatur untuk membungkus ) untuk secara otomatis menangani pengulangan tekstur dan pengguliran tekstur .

  1. Untuk pengulangan alih-alih mengatur koordinat tekstur vertikal Anda dari [0 ke 1], atur dari [0 ke N] di mana N adalah berapa kali Anda ingin mengulangi tekstur. Sesuaikan nilai ini tergantung pada seberapa tinggi quad Anda dibandingkan dengan tinggi tekstur Anda.
  2. Untuk menggulir, saya cukup menggulir koordinat tekstur vertikal, jadi alih-alih mulai dari [0 ke N] itu akan berkisar dari [inc ke N + inc] dengan nilai inc yang bertambah atau mengurangi setiap frame. Dari waktu ke waktu saya akan membungkus inc ke asal untuk mencegah overflow / underflow.

EDIT Saya baru saja mencoba mengimplementasikan ini persis seperti yang saya jelaskan (tetapi dalam XNA) dan itu bekerja dengan cukup baik. Lihat video demo ini. Kode sumber di sini untuk mereka yang tertarik.


Misalnya, dengan N sama dengan 3 Anda akan mendapatkan sesuatu seperti gambar di bawah ini (saya telah melukis bagian tengah berwarna merah sehingga Anda dapat melihat di mana pengulangan terjadi). Kemudian, hanya dengan mengubah nilai inc akan membuat gulir jalan di satu arah atau yang lain, tergantung pada apakah Anda menambah atau mengurangi itu.

masukkan deskripsi gambar di sini

David Gouveia
sumber
Teknik yang sama dapat digunakan untuk memalsukan animasi benang tank. Tentu saja, itu tidak akan dapat digunakan jika Anda memodelkan setiap segmen rantai ...
Exilyth
1

Jika Anda ingin membuat jalan tanpa ujung "nyata", Anda membuat tiga permukaan dan membuatnya berputar saat setiap permukaan bergerak di luar tampilan. Tempatkan permukaan ujung ke ujung di ruang dunia dan gerakkan semuanya ke arah kamera. Saat ujung terdekat bergerak dari kamera, atur ulang posisinya ke ujung permukaan terjauh.

Jika Anda ingin menerapkannya sebagai sprite dengan ilusi gerakan, Anda perlu membuat sejumlah tekstur yang berbeda, yang akan terlihat seperti ini:

Saat tampilan bergerak maju loop melalui tekstur secara berurutan.

Kitt Basch
sumber
0

Mengulang gambar adalah ide yang bagus. Cari tahu berapa banyak pengulangan yang perlu terlihat di layar, dan gambarlah gambar itu beberapa kali. Saat jalan bergulir, akan ada titik di mana satu gambar benar-benar di belakang kamera dan dengan demikian tidak terlihat. Pada titik itu, Anda ingin memindahkan gambar itu dari belakang kaki Anda ke ujung strip gambar terbatas Anda.

Sementara kita melakukannya, Anda akan mendapatkan efek terbaik dari itu dengan meniru perspektif yang tidak stabil dari seorang pria yang sedang berlari. Rekam film yang Anda jalankan dari perspektif mata Anda, dan pelajarilah.

Stefan Majewsky
sumber
2
Itu tidak benar-benar berhasil, karena citranya adalah perspektif. Dia membutuhkan gambar yang berbeda untuk dimainkan sebagai animasi.
Bobby