Witam,
Piszę od 2 tygodni grę na zaliczenie przedmiotu. Mianowicie jest ona w podobieństwie do gry z Androida Speedx3D.
Proszę o pomoc, udzielenie wsparcie w dwóch kwestiach:
-
Mam kłopot z ustawieniem poruszania się kamery w pionie tzn. chodzi mi ze gdy wcisnę klawisz W to kamera porusza sie po osi Y a gdy S to w dół. Chodzi mi konkretnie aby omijać przeszkody w tunelu.
-
Mam także kłopot z generowaniem losowym przeszkód. Otóż generują się one ale zaraz znikają - nie są w jednym miejscu. Ściślej mówiąc cały czas się przemieszczają a nie o to chodzi. Chciałbym uzyskać taki efekt żeby jak gracz ominie jakąś przeszkodę to następna generowała się w oddali itd.
Załączam skrawki mojego kodu:
void OnTimer(int id) {
glutTimerFunc(17, OnTimer, 0);
#pragma region Ruch kamery
if (keystate[‘r’]) {
player.velM = player.speed;
}
if (keystate[‘w’]) {
//player.velZ = player.speed;
}
if (keystate[‘s’]) {
//player.velZ = -player.speed;
}
if (keystate[‘a’]) {
player.velS = -player.speed;
}
if (keystate[‘d’]) {
player.velS = player.speed;
}
// Wektor prostopadły:
vec3 per;
per.x = -player.dir.z;
per.y = 0;
per.z = player.dir.x;
// Ruch przod/tyl:
player.pos.x += player.dir.x * player.velM * .1f;
if (free3DMovement) {
player.pos.y += player.dir.y * player.velM * .1f;
}
else {
player.pos.y = 1.0f;
}
player.pos.z += player.dir.z * player.velM * .1f;
// Ruch na boki:
player.pos.x += per.x * player.velS * .1f;
if (free3DMovement) {
player.pos.y += player.dir.y * player.velM * .1f;
}
else {
player.pos.y = 1.0f;
}
player.pos.z += per.z * player.velS * .1f;
//Ruch gora/dol
#pragma endregion
void Kwadraty()
{
int ix,iz,iy;
glPushMatrix();
srand(time(NULL));
for(ix = -5.5; ix < 5.5;ix += rand()%6){
for(iz = 10; iz < 1000 ;iz += 10){
for(iy = -0.5; iy < 5.5 ;iy += rand()%10){
glPushMatrix();
//glTranslatef(ix, 0.5f, iz);
glTranslatef(ix, iy, iz);
glEnable(GL_TEXTURE_2D);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glBindTexture(GL_TEXTURE_2D, texCheckboard_linear_mm3);
glCallList(box);
glDisable(GL_TEXTURE_2D);
glPopMatrix();
}
}
}
glPopMatrix();
}
I funkcje Kwadraty() wywołuję w OnRender.
Pozdrawiam,