Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





determinar el Z de un sprite

Iniciado por SKoN, 30 de Diciembre de 2002, 02:49:18 AM

« anterior - próximo »

SKoN

                                el jueguecillo de naves toy usando de fondo de scroll un cuadrado y deslizando la textura y me gustaria crear uno aariba de sprite para dar sensacion niebla

uso ID3DXSPRITE pero ni idea de como poner un poligono arriba del sprite aver si alguien se le ocurre algo :)                                
KoN

Mars Attacks

                                Hmmm... ¿pintas el fondo, desactivas el Z-Buffer, pintas la niebla, activas el Z-Buffer y pintas el resto?
No sé, no sé... ¿es totalmente 2d?                                

SKoN

                                si bueno pintando la capa del fondo luego el sprite y luego la capa de niebla encima funciona,cada uno en su luegar por el orden de render
pensaba que habria otra manera para controlarlo que no fuera por orden de render :/

otra preguntilla tamb de sprites, relacionado con animacionm



 D3DXCreateSprite(m_pD3DDevice,&Sprite);  

 Sprite->Begin();

  Sprite->Draw(m_pTexture[anim++],NULL,NULL,NULL,0,&m_vSpritePos,0xFFFFFFFF );

 Sprite->End();

 Sprite->Release();




pues pongo la animacion en un bmp y lo meto en una textura para coger luego el sprite que quiera, bueno esto ta claro mas o menos el tema esta en la velocidad de la animacion, que no se como controlarla, alguna idea? que no sea poniendo pausas de esas por medio del codigo  :idea:                                
KoN

SKoN

                                por cierto...la pregunta de si es totalmente 2d...

para el scroll normal y niebla uso proyeccion ortogonal en mini mundo 2D :)

creo 1 cuadrado como la pantalla y voy rotando las textura, lo demas, osea las naves,disparos etc son sprites

SKoN                                
KoN

Mars Attacks

                                Sobre la animación, siempre me pongo a pensar en cargar un gif animado en un polígono y siempre me doy de morros con que al parecer no hay cargadores de gifs, que ahora se hacen esas cosas con stencil shadows y cosillas de esas, así que me pongo a divagar y se me acaban ocurriendo métodos charcuteriles tipo "ir incrementando una variable y cuando llegue a un determinado valor, cambiar la imagen y resetear la variable".
No sé cómo funcionará un gif internamente, pero es una forma de no usar un pause, sencillamente incrementas un contador y si no es un determinado valor, no haces nada y sigues con lo demás.
Espero que te sirva, lo mío no es la programación =)
No te he acabado de entender la explicación que has dado sobre si es totalmente 2d. ¿Es 3D visto en proyección ortogonal desde una vista de planta?
Otra pregunta, ¿de dónde has sacado ese avatar? está chulo  :ojo:                                

Mars Attacks

                                Vaya, creo que acaban de cambiártelo -o te lo has cambiado tú- (un poco excesivo de tamaño sí que era, tal vez).                                

SKoN

                                Entiendo perfectamente lo que dices de la variable para controlar la animacion, es una de las maneras que se me habian ocurrido, pero queria leer mas opiniones aver de que otras formas lo hacia la gente :)
Lo del mundo en vista ortogonal es simplemente un mundo 3d pero sin perspectiva, es decir todos los objetos se ven igual de alejados/cerca
Si estaba probando avatares, es la screen del juego de naves ese del que hablo, si era muy grande la imagen

http://usuarios.lycos.es/gimmik/photoalbum.html

gracias por la ayuda :D                                
KoN

Mars Attacks

                                Bueno, lo del 3d sólo lo decía para tu problema original de la niebla. Si es un mundo 3d, sólo tendrías que dibujar la niebla con un Z algo mayor que el que le hayas dado al fondo (algún valor habrás tenido que darle al fondo, ¿no?).
Me sigue encantando esa imagen, felicidades al grafista.                                

[Over]

                                Hola.

Para solucionar el tema de la velocidad con la que dibujas, deberias hacerlo por tiempo, asi irá independiente del nº de fps que de en un equipo o en otro (a menos que tengas una pausa global o algo asi). Yo lo hago asignando una cantidad MS (milisengudos) a cada sprites, es decir, este sprite(frame), estará siendo dibujando durante ese tiempo y luego cambia al siguiente y asi. Para hacerlo por tiempo, usa funciones tales como GetTickCount();, y si quieres funciones mas proximas o mas precisas usa: QueryPerformanceCounter(); y QueryPerformanceFrequency();

Una idea es crearte varias clases para controlar animaciones, yo tengo una clase que gestiona todas las secuencias de un objeto (en tu caso, la nave), una clase que gestiona una secuencia y una clase que gestiona un frame de esa secuencia. Asi lo tienes todo muy ordenado y es bastante eficaz. Eso ya por gustos.

Para el tema del Z, yo lo hago por orden de render, create una lista con los elementos a dibujar ordenados por su Z y si esta cambia, cuando cambié, actualiza la lista. Si tienes un cambio abusivo de Z, no se si será optimo, aunque no creo que tengas muchos elementos para render a la vez.

Espero que te sea util. Chao.                                

SKoN

                                Gracias por la ayuda, lo probaré.  :jaja:                                
KoN






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.