Во -первых, мне нужно, чтобы главный герой (как спрайт) этой видеоигры поднимался на 4 единицы высоты в ответ, когда я толкаю ключ прыжка. Именно в функции дисплея (функция OpenGL Java выполняется повторение в цикле): < /p>
@Override
public void display(GLAutoDrawable glad){
< /code>
mario like pattforms game
и функция 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;}
}
< /code>
правильно кодируется этот алгоритм? Как это (персонаж) может подняться и спуститься должным образом?
Подробнее здесь: https://stackoverflow.com/questions/794 ... ht-and-nex
Jump Action, в игре типа Plattforms, как подняться на 4 единицы высоты, а затем, как спуститься в 4 единицы высоты в ope ⇐ JAVA
Программисты JAVA общаются здесь
1738422363
Anonymous
Во -первых, мне нужно, чтобы главный герой (как спрайт) этой видеоигры поднимался на 4 единицы высоты в ответ, когда я толкаю ключ прыжка. Именно в функции дисплея (функция OpenGL Java выполняется повторение в цикле): < /p>
@Override
public void display(GLAutoDrawable glad){
< /code>
mario like pattforms game
и функция 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;}
}
< /code>
правильно кодируется этот алгоритм? Как это (персонаж) может подняться и спуститься должным образом?
Подробнее здесь: [url]https://stackoverflow.com/questions/79401086/jump-action-in-a-plattforms-type-of-game-how-to-go-up-4-units-of-height-and-nex[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия