Kali ini topiknya adalah membuat peluru untuk pesawat jagoan agar pesawat bisa berperang.
Untuk membuat peluru tersebut caranya tidak susah-susah amat.
Ogut siapin typedef struct dan variable seperti di bawah ini.
////peluru jagoan================================\/
typedef struct
{
int aktif;
int Type;
double Ax;
double Ay;
double Bx;
double By;
double Cx;
double Cy;
double Dx;
double Dy;
}Objek_Peluru;
int delay_peluru_Jagoan = 0;
int Total_Peluru_Jagoan = 50;
Objek_Peluru Peluru_Jagoan[50];
//Objek_Peluru Peluru_Hely[90];
int Tipe_Peluru_Aktif;
unsigned int peluru_mask;
unsigned int peluru_image;
///peluru jagoan=================================/\
void Keyboard_ditekan()
{
...
...
...
//tekan tombol peluru========================\/
delay_peluru_Jagoan = delay_peluru_Jagoan + 1;
if (GetKeyState('V') & 0x80)
{
if (delay_peluru_Jagoan >= 15)
{
delay_peluru_Jagoan = 0;
Jagoan_Fire();
}
}
//tekan tombol peluru========================/\
}
ABCD peluru tergantung dari posisi pesawat atau ABCD nya pesawat.
//isi peluru
void Jagoan_Fire()
{
int i;
for (i = 0; i < Total_Peluru_Jagoan; i++)
{
if (Peluru_Jagoan[i].aktif == 0)
{
Peluru_Jagoan[i].aktif = 1;
Peluru_Jagoan[i].Type = 0;
//menentukan posisi awal peluru
//posisi awal peluru ditentukan oleh
//posisi badan hely, pada saat hely
//melepaskan peluru
Peluru_Jagoan[i].Ax = ((Pesawat_Jagoan.Cx - Pesawat_Jagoan.Dx) / 2.0) + Pesawat_Jagoan.Dx - 15.0;
Peluru_Jagoan[i].Bx = ((Pesawat_Jagoan.Cx - Pesawat_Jagoan.Dx) / 2.0) + Pesawat_Jagoan.Dx + 15.0;
Peluru_Jagoan[i].Dx = Peluru_Jagoan[i].Ax;
Peluru_Jagoan[i].Cx = Peluru_Jagoan[i].Bx;
Peluru_Jagoan[i].Ay = Pesawat_Jagoan.Dy - 10.0;
Peluru_Jagoan[i].By = Peluru_Jagoan[i].Ay;
Peluru_Jagoan[i].Cy = Peluru_Jagoan[i].By + 50.0;
Peluru_Jagoan[i].Dy = Peluru_Jagoan[i].Cy;
i = Total_Peluru_Jagoan;
}
}
}
Terakhir tampilkan peluru. Posisi peluru harus terus diupdate agar bergerak. Dan peluru yang ditampilkan hanya peluru yang aktif (Peluru_Jagoan[i].aktif == 1). Jika posisi peluru telah keluar dari layar game maka Peluru_Jagoan[i].aktif = 0.
for (i = 0; i <= Total_Peluru_Jagoan; i++)
{
//==============================================================================================
//=================================segiempat PELURU tarus disini \/
//tampilkan peluru mask
//ubah posisi peluru
if (Peluru_Jagoan[i].aktif == 1)
{
Peluru_Jagoan[i].Ay = Peluru_Jagoan[i].Ay + 15.0;
Peluru_Jagoan[i].By = Peluru_Jagoan[i].By + 15.0;
Peluru_Jagoan[i].Cy = Peluru_Jagoan[i].Cy + 15.0;
Peluru_Jagoan[i].Dy = Peluru_Jagoan[i].Dy + 15.0;
}
//cek peluru aktif/ tidak
if (Peluru_Jagoan[i].Ay > (double)(Ymax))
{
Peluru_Jagoan[i].aktif = 0;
}
if (Peluru_Jagoan[i].aktif == 1)
{
glEnable(GL_BLEND);
glBlendFunc(GL_DST_COLOR, GL_ZERO);
glBindTexture(GL_TEXTURE_2D, peluru_mask);
glBegin(GL_POLYGON);
glTexCoord2d(0.0, 0.0);
glVertex2d(Peluru_Jagoan[i].Ax, Peluru_Jagoan[i].Ay);
glTexCoord2d(1.0, 0.0);
glVertex2d(Peluru_Jagoan[i].Bx, Peluru_Jagoan[i].By);
glTexCoord2d(1.0, 1.0);
glVertex2d(Peluru_Jagoan[i].Cx, Peluru_Jagoan[i].Cy);
glTexCoord2d(0.0, 1.0);
glVertex2d(Peluru_Jagoan[i].Dx, Peluru_Jagoan[i].Dy);
glEnd();
//tampilkan peluru image
glBlendFunc(GL_ONE, GL_ONE);
glBindTexture(GL_TEXTURE_2D, peluru_image);
//glColor3f(1.0f,1.0f,1.0f);
glBegin(GL_POLYGON);
glTexCoord2d(0.0, 0.0);
glVertex2d(Peluru_Jagoan[i].Ax, Peluru_Jagoan[i].Ay);
glTexCoord2d(1.0, 0.0);
glVertex2d(Peluru_Jagoan[i].Bx, Peluru_Jagoan[i].By);
glTexCoord2d(1.0, 1.0);
glVertex2d(Peluru_Jagoan[i].Cx, Peluru_Jagoan[i].Cy);
glTexCoord2d(0.0, 1.0);
glVertex2d(Peluru_Jagoan[i].Dx, Peluru_Jagoan[i].Dy);
glEnd();
glDisable(GL_BLEND);
}
//=================================segiempat PELURU tarus disini /\
}
//peluru==================================================/\
Selesai sudah bahasan tentang peluru. Gak susah kan. Sampai jumpa lagi di artikel ogut yang lain.
Salam Sukses Selalu
Heriady
-----------------------------------------------------------------------
-----------------------------------------------------------------------
-----------------------------------------------------------------------
-----------------------------------------------------------------------
Tidak ada komentar:
Posting Komentar