elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [SFML] Rebote de colisión
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: [SFML] Rebote de colisión  (Leído 7,721 veces)
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: [SFML] Rebote de colisión
« Respuesta #10 en: 26 Junio 2015, 01:58 am »

Código
  1. if(rec.getPosition().y>=rect2.left)
Eso será rect2.top, no .left.

De cualquier forma, es emétodo lo que hace es corregir progresivamente la superposición de los rectángulos. Una colisión es una colisión.

Una opción, es, en el código de movimiento, tras moverse, comprobar con intersecs(). En caso verdadero, deshaces el movimiento. Es una forma muy simple, pero efectiva en casos también simples.


En línea

DeMoNcRaZy


Desconectado Desconectado

Mensajes: 420


$~*|_


Ver Perfil
Re: [SFML] Rebote de colisión
« Respuesta #11 en: 26 Junio 2015, 02:09 am »

De igual modo al colocar (.top):

Código
  1. if(rec.getPosition().x<=rect2.left){
  2.                rec.setPosition(rec.getPosition().x-1, rec.getPosition().y);
  3.            }
  4.            if(rec.getPosition().x>=rect2.left){
  5.                rec.setPosition(rec.getPosition().x+1, rec.getPosition().y);
  6.            }
  7.            if(rec.getPosition().y<=rect2.top){
  8.                rec.setPosition(rec.getPosition().x, rec.getPosition().y-1);
  9.            }
  10.            if(rec.getPosition().y>=rect2.top){
  11.                rec.setPosition(rec.getPosition().x, rec.getPosition().y+1);
  12.            }

Me da el mismo error que muestra al comenzar el vídeo, intento chocar con la figura pero al chocar se desplaza sola cuando se debería estar quieta sin poder avanzar más hasta que yo cambie de movimiento.

Código
  1. if(rec.getPosition().y<=rect2.top){
  2.                rec.setPosition(rec.getPosition().x, rec.getPosition().y-1);
  3.            }
  4.            if(rec.getPosition().y>=rect2.top){
  5.                rec.setPosition(rec.getPosition().x, rec.getPosition().y+1);
  6.            }


Referente a:

Código:
Una opción, es, en el código de movimiento, tras moverse, comprobar con intersecs(). En caso verdadero, deshaces el movimiento. Es una forma muy simple, pero efectiva en casos también simples.

¿Te refieres a crear una función?


Saludos!


En línea

Esta página web no está disponible - Google Chrome
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: [SFML] Rebote de colisión
« Respuesta #12 en: 26 Junio 2015, 12:39 pm »

Si yo no digo que eso lo corrigiera, pero era técnicamente incorrecto. Si funcionó era porque X e Y son iguales.
Lo que digo es que, tras hacer el .move() al captar las teclas, en caso de que esté en una zona incorrecta, que haga un .move inverso.
En línea

Maurice_Lupin


Desconectado Desconectado

Mensajes: 356

GPS


Ver Perfil WWW
Re: [SFML] Rebote de colisión
« Respuesta #13 en: 3 Julio 2015, 17:40 pm »

Hola, podrias utilizar otro rectangulo que se mueve, detectas si colisiona con rec2
Código
  1.      //Movimiento otro rectangulo
  2.       if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up)){
  3.           otroRec.move(0, -1);
  4.       }
  5.       // ...  detectando teclas para otroRec
  6.  
  7.      if( !otroRec.intersects(rect2) ) { // Si no hay interseccion, actualizas el move
  8.          rec.move(otroRec.getPosition().x, otroRec.getPosition().y);
  9.      }
  10.      // otroRec no lo tienes que pintar
  11.  

Si te interesa averiguar sobre programación de juegos, vi por ahi un manual para juegos en C++ con Allegro, usa clases, excelentes conceptos me dio una idea sobre los videojuegos. Incluso hay un capitulo sobre colisiones.

El link : CURSO DE PROGRAMACIÓN DE VIDEJUEGOS CON C++ Y ALLEGRO

Saludos.
« Última modificación: 3 Julio 2015, 17:41 pm por Maurice_Lupin » En línea

Un error se comete al equivocarse.
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Colision de 2 image [Solucionado]
Programación Visual Basic
skapunky 8 7,783 Último mensaje 4 Septiembre 2008, 14:52 pm
por cobein
Comprobar colisión de 2 cuadrados en SDL
Programación C/C++
Stereo 7 4,641 Último mensaje 24 Febrero 2013, 15:32 pm
por Anastacio
¿ Como hago para que un radiobutton rebote en un button ?
.NET (C#, VB.NET, ASP)
arts 2 2,632 Último mensaje 18 Junio 2013, 04:18 am
por XresH
Colisión entre objetos JS
Desarrollo Web
SrTrp 6 5,117 Último mensaje 14 Julio 2017, 02:29 am
por SrTrp
Rebote de ubicacion por whatsapp??
Dispositivos Móviles (PDA's, Smartphones, Tablets)
luislial 0 1,968 Último mensaje 29 Abril 2018, 19:07 pm
por luislial
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines