PDA

Abdull wahab
01-10-2017, 06:37 AM
I am making 3d game in open gl whcih contain pendulums and cannon guns shoot by user but when i shoot the bullet did not follow correct path and thats why collision detection did not occure for simplicity initialy there is gun with bullet and only single pendulum bob as scene in picture
pendulum code is here

glPushMatrix();
glTranslatef(400, 50, -400);
drawBomb();
glPopMatrix();
cannon gun and bullet code is here

//canon fire with bomb

glPushMatrix();
glTranslatef(600, 0, -400);
glRotatef(-longFire, 1, 0, 0);
glRotatef(-longFireChaw, 0, 1, 0);

//glTranslatef(0, 0, -25);
drawFireHolder();
//printf_s("Long fire is %d", longFire);

glPopMatrix();

glPushMatrix();

glTranslatef(bombX, bombY, -400);
//glRotatef(-longFire, xRotate, yRotate, zRotate);
glRotatef(-longFire, 1, 0, 0);
glRotatef(-longFireChaw, 0, 1, 0);
//glRotatef(longFire, 0, 1, 0);
glTranslatef(0, 0, bombZ);
glTranslatef(0, 0, 25);

drawBomb();
glPopMatrix();
timer code is here

if (fire == true)
{

bx = 0;
bz = 415-bombX;
dx = 400 - bombX;
dy = 50-bombY;
dz = -400 -(-400);

float distance = sqrt(dx*dx + dy*dy + dz*dz);

// printf("DISTANCE IS %f",distance);
// distance=floor(distance);
if (distance <=100)
{
printf("Collision Occur");
}
if (distance <= (12))// radius is the radus of our bounding sphere for each object
{
// printf("Collision Occur");
}

//bombX++;
bombX--;
bombY = bombY +sin((longFire*3.142)/180);
//bombZ = bombZ + cos((longFire*3.142) / 180);
bombZ++;
//printf("Y IS %f",bombY);
}
keboard controller is here

if (key == 't' || key == 'T')
{
xRotate = 1, yRotate = 0, zRotate = 0;
longFire += 5;
handlerMove();
}
if (key == 'e' || key == 'E')
{
xRotate = 1, yRotate = 0, zRotate = 0;
longFire -= 5;
handlerMove();
}
if (key == 'r' || key == 'R')
{
xRotate = 0, yRotate = 1, zRotate = 0;
longFireChaw += 5;
handlerMove();
}
if (key == 'w' || key == 'W')
{
xRotate = 0, yRotate = 1, zRotate = 0;
longFireChaw -= 5;
handlerMove();
}
how can we follow correct path and hit pendulum any idea?