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 .
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.
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.
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.
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.
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.
sumber
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.
sumber