Джак Действия, в игре типа Plattforms, как подняться на 4 единицы высоты и затем, как спуститься на 4 единицы высоты в oJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Джак Действия, в игре типа Plattforms, как подняться на 4 единицы высоты и затем, как спуститься на 4 единицы высоты в o

Сообщение Anonymous »

Во -первых, мне нужно, чтобы главный герой (как спрайт) этой видеоигры Mario, такой как Pattforms Game, выполняя Jump Action, поднимающийся на 4 единицы высоты в ответ, когда я толкаю ключ прыжка. Именно в функции дисплея (функция OpenGL Java выполняется повторение в цикле): < /p>

Код: Выделить всё

@Override
public void display(GLAutoDrawable glad){
< /code>
и функция init, где инициализируется несколько переменных в opengl java: < /p>
   @Override
public void init(GLAutoDrawable glad){
final GL2 gl = glad.getGL().getGL2(); //Se genera un objeto de tipo GL2
final GLU glu = new GLU(); //Se genera un objeto de tipo GLU
incx=incy=0;
x1escenario=0;//coordenadas inicuales origen del escenario
y1escenario=0;
x1escenarioacum = x1escenario;
y1escenarioacum = y1escenario;
x1PerSimulada = posPersonajeX;
y1PerSimulada = posPersonajeY;
x1Pared1acum = posPared1X;
y1Pared1acum = posPared1Y;}
< /code>
и графическая часть проблемы (которая вызывается из строки функции дисплея Opengl java): < /p>
    dibujaEscenario(glad, x1escenarioacum, y1escenarioacum, ladoEsc);
dibujaMuro1(glad, x1Pared1acum, y1Pared1acum, widthMuro1, heightMuro1);
dibujaPersonaje(glad, 3.5f, 1.5f, ladoPer);
< /code>
и графическая часть задачи: < /p>
    public void dibujaEscenario(GLAutoDrawable glad, float x1, float y1, float lado) {
final GL2 gl = glad.getGL().getGL2(); //Se
gl.glPointSize(12f);
gl.glBegin(GL2.GL_QUADS);//Se comienza a dibujar los puntos
gl.glColor3f(1, 0, 0);//Se activa el color rojo
x1escenarioacum = x1escenarioacum + (-1)* (incx);
x1Pared1acum = x1Pared1acum + (-1) *incx; //también se reposicionan muros verticales
x1PerSimulada = x1PerSimulada + incx;
y1escenarioacum = y1escenarioacum + (-1) * incy;//with an y increase the scenary decreases his y coordinate
y1Pared1acum = y1Pared1acum + (-1) * incy; //with an y increase, the Pared(wall) decreases his y coordinate.  También se reposicionan muros verticales
y1PerSimulada = y1PerSimulada + incy;
pos12 = new Posicion(x1escenarioacum, y1escenarioacum);
p2=new Posicion(x1PerSimulada, y1PerSimulada);
paredCerc12 = new ParedCercana(pos12, widthSuelo1, heightSuelo1, true, false, "Suelo", "techo");
personaje = new Personaje(p2,  widthPersonaje, heightPersonaje, true, false, natPer);

//simulada porque la camara, esta en el personaje princi, y realmente, se mueve solo el escenario y no este (personaje princi)

posAcumEscenarioXAntesDeColision =x1escenarioacum;
posAcumEscenarioXAntesDeColision = x1Pared1acum;
gl.glVertex2f(x1escenarioacum, y1escenarioacum+lado-8.5f); //Se dibuja el punto
gl.glColor3f(0, 0, 1);//Se activa el color azul
gl.glVertex2f(x1escenarioacum+lado, y1escenarioacum+lado-8.5f);
gl.glColor3f(0, 1, 0);//Se activa el color verde
gl.glVertex2f(x1escenarioacum+lado, y1escenarioacum);
gl.glColor3f(0, 0, 0);//Se desactivan todos los colores
gl.glVertex2f(x1escenarioacum, y1escenarioacum);
gl.glEnd();
incx = 0;
if((!saltarBajando)&&(!saltar)&&(!saltarVenimosdeSaltarArriba)) {
incy = 0;
//saltarVenimosdeSaltarAbajo=false;
}
}

public void dibujaMuro1(GLAutoDrawable glad, float x1, float y1, float lado, float Muro1height) {
final GL2 gl = glad.getGL().getGL2(); //Se
gl.glPointSize(12f);
gl.glBegin(GL2.GL_QUADS);//Se comienza a dibujar los puntos
gl.glColor3f(1, 0, 0);//Se activa el color rojo
//x1Pared1acum = x1Pared1acum - incx;
gl.glVertex2f(x1Pared1acum, y1Pared1acum+Muro1height*1.5f); //Se dibuja el punto
gl.glColor3f(0, 0, 1);//Se activa el color azul
gl.glVertex2f(x1Pared1acum + lado, y1Pared1acum+Muro1height*1.5f);
gl.glColor3f(0, 1, 0);//Se activa el color verde
gl.glVertex2f(x1Pared1acum+lado, y1Pared1acum);
gl.glColor3f(0, 0, 0);//Se desactivan todos los colores
gl.glVertex2f(x1Pared1acum, y1Pared1acum);
gl.glEnd();
incx = 0;
}

public void dibujaPersonaje(GLAutoDrawable glad, float x1, float y1, float lado) {
final GL2 gl = glad.getGL().getGL2(); //Se
gl.glPointSize(12f);
/*GLQUADS ORDER: top left.
top right.
bottom right.
bottom left*/
gl.glEnable(GL2.GL_TEXTURE_2D);
posPersonajeX =x1;
posPersonajeY =y1;
if((saltar)||(saltarBajando)||(hasaltadoUnaVez))
{
//gl.glEnable(GL2.GL_TEXTURE_2D); //carga texturas:

//gl.glBindTexture(GL2.GL_TEXTURE_2D, texture2);
t2.enable(gl);
t2.bind(gl);
// hasaltadoUnaVez = true;
}
else{
//gl.glBindTexture(GL2.GL_TEXTURE_2D, texture);
t.enable(gl);
t.bind(gl);
}
//widthPersonaje = lado;  //esto no cambia por lo que lo hago en init()
gl.glBegin(GL2.GL_QUADS);//Se comienza a dibujar los puntos
gl.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);//Se activa el color rojo
gl.glTexCoord2f(0.0f, 1.0f);
gl.glVertex2f(x1, y1+lado+lado);  //Se dibuja el punto
//gl.glColor3f(1, 0, 0);//Se activa el color azul
gl.glTexCoord2f(1.0f, 1.0f);
gl.glVertex2f(x1+lado, y1+lado+lado);
gl.glTexCoord2f(1.0f, 0.0f);
gl.glVertex2f(x1+lado, y1);
//gl.glColor3f(0, 1, 0);//Se activa el color verde

//gl.glColor3f(0, 0, 0);//Se desactivan todos los colores
gl.glTexCoord2f(0.0f, 0.0f);
gl.glVertex2f(x1, y1);
//gl.glDisable(GL2.GL_TEXTURE_2D);

//gl.glVertex3f(x1escenario, incy, incx);

//gl.glVertex3f(x1escenario, incy, incx);

//gl.glVertex3f(x1escenario, incy, incx);

//gl.glVertex3f(x1escenario, incy, incx);
gl.glEnd();
}
< /code>
(Incy - это увеличение графических текстур, связанных с проблемой, а Saltarcontadoraltura - это количество высот в единицах, которые мне нужно, чтобы символ должен подняться) (код прыжков вызывается Из линии функции дисплея opengl java): < /p>
    verSiSaltar();
< /code>
и код INCY и Saltarcontadoraltura увеличивается и уменьшается: < /p>
 if((saltar)&&(saltarContadorAltura=0.0f))
{
incy = 1.0f;
saltarContadorAltura=saltarContadorAltura+1.0f;
if(saltarContadorAltura==4.0f){saltar = false;
}

}
< /code>
Далее мне нужно, чтобы символ упал 4 единицы высоты до полу: < /p>
    if(saltarContadorAltura==4.0f)
{
incy=-1.0f;
saltarContadorAltura = saltarContadorAltura -1.0f;
}
if((saltarContadorAltura0.0f))
{
incy=-1.0f;
saltarContadorAltura = saltarContadorAltura -1.0f;
if(saltarContadorAltura==0.0f) {incy=0.0f;}
}
Как это (символ) может подняться и спуститься должным образом?

Подробнее здесь: https://stackoverflow.com/questions/794 ... ht-and-nex
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»