Jump to content
Sign in to follow this  
Megadok

Undertale combat.

Recommended Posts

Hola chicos , intento hacer un sistema de combate como UNDERTALE y me asalta la siguiente duda.
Como podréis ver en la foto, el combate se desarrolla dentro de un rectángulo en la parte media baja de la pantalla, mi duda es, esto puede hacerse con un ¿UI Image?, y si es así, a la hora de instanciar todos los sprites necesarios para el combate dentro del recuadro, cómo puedo posicionarlos con respecto al área rectangular?

Gracias.

ut.png

Share this post


Link to post
Share on other sites

Si te creas un panel de UI y cuelgas todas imágenes de ese panel, la posición será relativa a él. Y si además le colocas una mask, evitarás que las imágenes al salir del panel se lleguen a ver.

Share this post


Link to post
Share on other sites

Gracias pero las imágenes no irán emparentadas a él, si no que se ubicarán relativamente a él, pero necesito que lo haga en pixeles y no tengo ni idea.

Share this post


Link to post
Share on other sites
5 hours ago, Megadok said:

esto puede hacerse con un ¿UI Image? , y si es así, a la hora de instanciar todos los sprites necesarios para el combate dentro del recuadro, cómo puedo posicionarlos con respecto al área rectangular?

Poder se puede. Tiro ideas al aire (no he probado ninguna).

Podés crear el gameplay y renderizarlo en una imagen (RenderTarget), mezclandolo todo te quedaría como en Undertale. No se que tal se verá la textura final, si mantendrá la calidad o no. Acá no dependes del cuadro del gameplay, sino de la cámara.

Otra es usar una máscara, como dice iRobb. Para instanciar sprites necesitas un Vector2 (o 3), que lo vas a tener que calcular en base al famoso cuadro del gameplay. Podés calcular sus extremos usando el RectTransform, la posición se medirá desde el pivot ( <0.5,0.5> significa centro del objeto ) y posX y posY se calculan en base al anchor. Tenés que hacer el camino inverso, calcular los extremos del cuadro (no se si existe una manera fácil de hacer, si no un poco de matemática de UI y listo), luego pasar esos puntos al world position. Si no me falla la memoria con Camera.ScreenToWorldPoint (?) podés hacer esto. El resto es instnaciar a tus enemigos dentro del cuadro.

Si no te querés enquilombar tanto, simplemente meté unas variables públicas, como xMin, xMax, yMin e yMax, e instanciá a tus enemigos dentro de estos límites. Para mantener las dimensiones necesitas tener un cuadro con tamaño constante, es decir que si tener un canvas que se escala (dependiendo de la resolución) la vas a cagar.

 

Share this post


Link to post
Share on other sites

¿Cómo sería en csharp? Pon este "sprite" en x + 100 pixeles y,  y + 100 pixeles con respecto a una UI image emparentada en un canvas. 

Share this post


Link to post
Share on other sites

Tienes que poner todos los anchored a la posición cero (esquina superior izquierda) del elemento y el contenedor. 

Luego puedes asignar la posición local de cada elemento pensando que se van a empezar a dibujar de izquierda a derecha y de arriba a abajo. En cuanto a "x" cantidad de píxeles especificas no tendría mucho sentido, esto sería relativo, en todo caso podrías hablar de unidades "x" y estas ser un valor proporcionalmente relacionado con el contenedor.

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...