Suatu pagi sehabis weekend dan sehabis menyelesaikan proporsal untuk membuka tempat latihan baru...
Pagi rekan-rekan sekalian...salam sejahterah selalu...bagaimana keadaan agan-agan dan aganwati sekalian...luar biasa?...itu yang aku harapkan.
Artikel kali ini akan membahas tentang animasi untuk membuat game 2D dengan menggunakan matematika translasi. Setelah sebelumnya ogut memberi contoh animasi rotasi dengan memanfaatkan rumus rotasi pada sistem koordinat cartesius 2D. Maka kali ini ogut akan melengkapi artikel tersebut.
Pada bagian ini Anda akan diperkenalkan dengan translasi titik koordinat pada sistem koordinat cartesius 2D, dan di bagian akhir Anda akan belajar cara membuat animasi dengan menggunakan perhitungan translasi, hasil program dapat Anda lihat pada gambar di bawah ini.
Teori Translasi
Translasi adalah memindahkan sebuah titik koordinat ke posisi lain.
Pada gambar di atas terlihat sebuah titik koordinat A(x,y) yang dipindahkan sejauh dx dan arah perpindahannya sejajar dengan sumbu X.
Translasi dapat pula dilakukan sejajar dengan sumbu Y dan dapat juga merupakan kombinasi atau gabungan.
Translasi sejajar sumbu Y
Translasi kombinasi
Program yang ogut sertakan sebagai implementasi teori matematika untuk artikel ini adalah program yang mentranslasikan poligon persegipanjang sehingga menghasilkan suatu efek animasi 2D.
Bila program dijalankan akan terlihat objek pohon, awan, rumput dan bukit bergerak ke arah kanan yang memberi kesan seolah-olah pesawat bergerak ke arah kiri.
Berikut ini adalah kode program animasi dengan translasi.
Tentukan nilai awal titik koordinat poligon.
Private Sub SettingNilaiAwal()
...
...
...
'pohon1
Pohon1.Ax = -1250 : Pohon1.Ay = -510
Pohon1.Bx = -750 : Pohon1.By = -510
Pohon1.Cx = -750 : Pohon1.Cy = -5
Pohon1.Dx = -1250 : Pohon1.Dy = -5
...
...
...
End Sub
Translasikan lalu display poligon.
Private Sub Render_Pohon1()
'translasi koordinat poligon
If Pohon1.Bx < GlControl1.Width + 1000 Then
Pohon1.Ax = Pohon1.Ax + 20
Pohon1.Bx = Pohon1.Bx + 20
Pohon1.Cx = Pohon1.Cx + 20
Pohon1.Dx = Pohon1.Dx + 20
Else
Pohon1.Ax = -1250
Pohon1.Bx = -750
Pohon1.Cx = -750
Pohon1.Dx = -1250
End If
GL.Enable(EnableCap.Blend)
GL.BlendFunc(BlendingFactorSrc.DstColor, BlendingFactorDest.Zero)
'Mask
GL.BindTexture(TextureTarget.Texture2D, Pohon1BMP_Mask)
GL.Begin(BeginMode.Quads)
GL.TexCoord2(0.0, 0.0) : GL.Vertex2(Pohon1.Ax, Pohon1.Ay)
GL.TexCoord2(1.0, 0.0) : GL.Vertex2(Pohon1.Bx, Pohon1.By)
GL.TexCoord2(1.0, 1.0) : GL.Vertex2(Pohon1.Cx, Pohon1.Cy)
GL.TexCoord2(0.0, 1.0) : GL.Vertex2(Pohon1.Dx, Pohon1.Dy)
GL.End()
GL.BlendFunc(BlendingFactorSrc.One, BlendingFactorDest.One)
'BMP
GL.BindTexture(TextureTarget.Texture2D, Pohon1BMP)
GL.Begin(BeginMode.Quads)
GL.TexCoord2(0.0, 0.0) : GL.Vertex2(Pohon1.Ax, Pohon1.Ay)
GL.TexCoord2(1.0, 0.0) : GL.Vertex2(Pohon1.Bx, Pohon1.By)
GL.TexCoord2(1.0, 1.0) : GL.Vertex2(Pohon1.Cx, Pohon1.Cy)
GL.TexCoord2(0.0, 1.0) : GL.Vertex2(Pohon1.Dx, Pohon1.Dy)
GL.End()
GL.Disable(EnableCap.Blend)
If CheckBox2.Checked = True Then
'warna merah untuk garis
GL.BindTexture(TextureTarget.Texture2D, Red)
GL.Begin(BeginMode.LineLoop)
GL.Vertex2(Pohon1.Ax, Pohon1.Ay) 'titik kiri bawah
GL.Vertex2(Pohon1.Bx, Pohon1.By) 'titik kanan bawah
GL.Vertex2(Pohon1.Cx, Pohon1.Cy) 'titik kanan atas
GL.Vertex2(Pohon1.Dx, Pohon1.Dy) 'titik kiri atas
GL.End()
End If
End Sub
Bagaimana rekan-rekan sekalian, mudah bukan? tapi amat sangat bermanfaat, terutama untuk rekan-rekan yang baru belajar membuat game. Tuntas sudah pembahasan tentang matematika translasi pada artikel kali ini, di lain kesempatan ogut akan membahas tentang matematika vektor 2D untuk pemrograman game 2D. Jika rekan-rekan sudah mencoba menerapkan vektor pada pemrograman game maka rekan-rekan sudah bisa membuat deteksi tabrakan. Jangan bosan ya untuk belajar karena semuanya pasti melalui proses, tidak mungkin langsung ngebut tancap gas bisa-bisa nabrak dong.
Satu lagi untuk rekan-rekan yang ingin menyumbangkan ide atau teori atau program, ogut akan menerima dengan senang hati, blog ini diperuntukkan juga bagi programmer lain jadi tidak hanya ogut melulu yang buat programnya, karena berbagi itu indah, ogut ingin agar muncul para pembuat game pro di tanah air, sebab para pemain game pro sudah banyak tetapi para pembuat game pro masih sedikit.
Update 2 Jan 2016
Contoh program game yang menggunakan vektor untuk menyelesaikan perhitungan matematikannya.
Salam Sukses
Heriady
heriady.yoh@gmail.com
Artikel terkait
VB . Net dan OpenTK 2D
|
|
Tekstur di OpenTK 2D
|
|
Teknik masking pada OpenTK 2D
|
|
Matematika rotasi untuk animasi OpenTK 2D
|
Tidak ada komentar:
Posting Komentar