Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Colisiones Superficies Directx8

Iniciado por averbell, 09 de Marzo de 2005, 01:57:49 PM

« anterior - próximo »

averbell

 pueso no consigo detectar las colisiones con el color transparente ni atraves de mascara, alguien sabe como hacerlo?

nsL

 Para colision entre 2 sprites aun no lo he implementado, pero para raton si. Te pongo el codigo qu yo uso:

Esto devulve false si no hay colision en el Bounding Box y si hay colision, llama al metodo de mascaras:

bool CSprite::colisionRaton(SDL_MouseMotionEvent Event){
int w1,h1,x1,y1;

w1 = getw();
h1 = geth();
x1 = getx();
y1 = gety();

if (((Event.x)>x1) && ((Event.x)<(x1+w1)) && ((Event.y)>y1) && ((Event.y)<(y1+h1)))
 {
  return chkMask(Event.x,Event.y);
 } else {
  return false;
 }
}


y este es el metodo para ver si hay colision en la mascara, viendo el color del pixel donde este el puntero:

bool CSprite::chkMask(int X,int Y)
{
SDL_Color col;

col = getPixel(FrameSelec->frMask,X-posx,Y-posy);

if ((col.r == 0) && (col.g == 0) && (col.b == 0))
{
 return false;
} else {
 return true;
}
}


Hay mas metodos, pero de momento a mi me vale este y funciona (tengo pensado cambiarlo).

Saludos!  B)  
Yo no muero hasta la muerte -

averbell

 lo malo es que yo uso directx, y no consigo que me reconzca el color trasnparente ya que no sale, uso (VB)

averbell

 HaBE, aquí os dejo un link con lo que e conseguido, para que veais que consigo la colision con el box, pero kiero que me detecte si despues hay un color transparente o no. Y me estoy RAllando XDDD

EJEMPLO.EXE

REQUIERE DIRECTX 8

averbell


[EX3]

 Cual fue el problema? para asi tenerlo en cuenta si lo tengo que implementar alguna vez ;)

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

averbell

 Es algo cutre de la manera que lo echo, cargo un picturebox con la imagen orginal dandole el tamaño actual segun resolución i luego comprueba el pixel, por ahora tengo desobras, pero seguro que no se queda asi.

Otra cosa Tu usas los threads?.
Me podrias explicar el concepto...?
La idea es ejecutar varios scripts a  la vez.

[EX3]

 Si estas programando en VB6, un consejo, olvidate de usar Threads. Usar Threads en VB6 genera programas altamente inestables. Ya escarmente yo en su dia cuando lo probe ;)

Yo cuando el TLSA Engine aun usaba el M$ Script Control podia ejecutar varios scripts a la vez, vamos, en realidad eran ejecuciones secuenciales, ejecutas una lista de scripts, un script detras de otro en cada ciclo del bucle principal. Imagino que asi lo haran la mayoria de programas y da buen resultado.

Sobre lo del PictureBox para las colisiones... como me usas un control del VB utilizando DirectX por dios? :P No me quedo claro que problema fue el que tuvistes antes de aplicar lo del PictureBox: valores equivocos en la lecutura de pixeles? problemas con las dimensiones de las texturas?

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

averbell

 No habras entendido bien el conzepto de usar el picturebox, no se muestra por pantalla solo es para analizar los pixels transparentes.

El problema es que no conseguia detectar la colision con colores transparentes. solo con el box.

[EX3]

 
Cita de: "averbell"No habras entendido bien el conzepto de usar el picturebox, no se muestra por pantalla solo es para analizar los pixels transparentes.
Si ya me imaginaba que no lo presentarias por pantalla :P (aunque lo intentaras no lo llegarias a visualizar ya que el render del DirectX lo taparia) pero no se, yo que me he vuelto un poco "recatado" en VB con estas cosas huyendo de usar controles y componentes visuales seguramente hubiera cargado la imagen mediante el API de Windows y hubiera leido desde ahi los pixeles, todo desde codigo, aunque claro, esto trae mas trabajo que usar el PictureBox ;)

Cita de: "averbell"El problema es que no conseguia detectar la colision con colores transparentes. solo con el box.
Como realizabas la lectura de pixeles en D3D?

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

averbell

 lo probe de tantas maneras que ya no me acuerdo, pero me dava los pixels del fondo, no del color transparente

[EX3]

 Explicate un poco mas :P Yo no he tenido problemas con la lectura de pixeles por el momento, se supone que el ColorKey que seria el color transparente del sprite, por ejemplo azul ARGB(255, 0, 0, 255), es color que me devuelve la funcion que implemento para la lectura de pixeles. El ColorKey solo varia de color cuando salvas el sprite a BMP en disco, el ColorKey pasa a ser Negro.

Lees el pixel del sprite o del backbuffer?

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.