Cálculo animação sprite, visual Studio c++.
22/04/2023
0
Boa tarde!
Estou criando um pequeno game 2d em directx11, estou na para de animar os sprite.
Veja mina duvida:
Tenho uma folha de sprite com 18 quadros, 3 linha com 6 colunas.
Consigo fazer a animação de modo bem manual. Problema é que se precisar aumentar as colunas ou linhas preciso mudar todo o código da animação.
Gostaria se alguém ai puder me ajudar a fazer este código mais automático.
esse e o código:
OBS: Onde esta escrito mais: é o sinal +
Estou criando um pequeno game 2d em directx11, estou na para de animar os sprite.
Veja mina duvida:
Tenho uma folha de sprite com 18 quadros, 3 linha com 6 colunas.
Consigo fazer a animação de modo bem manual. Problema é que se precisar aumentar as colunas ou linhas preciso mudar todo o código da animação.
Gostaria se alguém ai puder me ajudar a fazer este código mais automático.
esse e o código:
float *v = new float[m_NumRow]; for (size_t i = 0; i < m_NumRow; i++) { v[i] = i*(1.0f/m_NumRow); } float t = 0, k = 1.0f/m_NumRow; if (currentFrame >= m_NumCol) { t = v[1]; } if (currentFrame >= (m_NumCol mais m_NumCol)) { t = v[2]; } if (currentFrame < m_NumCol) t = v[0]; m_vertices[0].uv.x = (float)(currentFrame) / m_NumCol; m_vertices[0].uv.y = t mais k; m_vertices[1].uv.x = (float)(currentFrame) / m_NumCol; m_vertices[1].uv.y = t; m_vertices[2].uv.x = (float)(currentFrame + 1.0f) / m_NumCol; m_vertices[2].uv.y = t; m_vertices[3].uv.x = (float)(currentFrame + 1.0f) / m_NumCol; m_vertices[3].uv.y = t mais k;
OBS: Onde esta escrito mais: é o sinal +
Mysql_2013
Curtir tópico
+ 0
Responder
Posts
24/04/2023
Arthur Heinrich
Para exibir um sinal de mais, dá para utilizar a tag html "+"
Não sei se entendi bem. Mas vamos imaginar o seguinte:
Não sei se entendi bem. Mas vamos imaginar o seguinte:
0 1 2 3 4 5 6 | | | | | | | x 0 -+-----+-----+-----+-----+-----+-----+---> | 0 | 1 | 2 | 3 | 4 | 5 | 1 -+-----+-----+-----+-----+-----+-----+ | 6 | 7 | 8 | 9 | 10 | 11 | 2 -+-----+-----+-----+-----+-----+-----+ | 12 | 13 | 14 | 15 | 16 | 18 | 3 -+-----+-----+-----+-----+-----+-----+ | y v Você quer calcular os vértices v[0] a v[3] de tal forma que: v1 +---------------+ v2 | | | | | | | | | | | | v0 +---------------+ v3 Ex.: Para current_frame = 8 v1=(2,1) +-------+ v2=(3,1) | | | 8 | | | v0=(2,2) +-------+ v3=(3,2) Supondo que current_frame, m_NumRow e m_NumCol são valores inteiros, você pode calcular: V[1].x = current_frame % m_NumCol V[1].y = current_frame / m_NumCol V[0].x = V[1].x V[0].y = V[1].y+1 V[2].x = V[1].x+1 V[2].y = V[1].y V[3].x = V[1].x+1 V[3].y = V[1].y+1
Responder
24/04/2023
Mysql_2013
Para exibir um sinal de mais, dá para utilizar a tag html "+"
Não sei se entendi bem. Mas vamos imaginar o seguinte:
Não sei se entendi bem. Mas vamos imaginar o seguinte:
0 1 2 3 4 5 6 | | | | | | | x 0 -+-----+-----+-----+-----+-----+-----+---> | 0 | 1 | 2 | 3 | 4 | 5 | 1 -+-----+-----+-----+-----+-----+-----+ | 6 | 7 | 8 | 9 | 10 | 11 | 2 -+-----+-----+-----+-----+-----+-----+ | 12 | 13 | 14 | 15 | 16 | 18 | 3 -+-----+-----+-----+-----+-----+-----+ | y v Você quer calcular os vértices v[0] a v[3] de tal forma que: v1 +---------------+ v2 | | | | | | | | | | | | v0 +---------------+ v3 Ex.: Para current_frame = 8 v1=(2,1) +-------+ v2=(3,1) | | | 8 | | | v0=(2,2) +-------+ v3=(3,2) Supondo que current_frame, m_NumRow e m_NumCol são valores inteiros, você pode calcular: V[1].x = current_frame % m_NumCol V[1].y = current_frame / m_NumCol V[0].x = V[1].x V[0].y = V[1].y+1 V[2].x = V[1].x+1 V[2].y = V[1].y V[3].x = V[1].x+1 V[3].y = V[1].y+1
vlw.
consegui.
m_vertices[0].uv.x = (m_currentFrame % m_numColunms) * m_spriteData.TextureSize.x;
m_vertices[0].uv.y = (m_currentFrame / m_numColunms) * m_spriteData.TextureSize.y &plus m_spriteData.TextureSize.y;
m_vertices[1].uv.x = (m_currentFrame % m_numColunms) * m_spriteData.TextureSize.x;
m_vertices[1].uv.y = (m_currentFrame / m_numColunms) * m_spriteData.TextureSize.y;
m_vertices[2].uv.x = (m_currentFrame % m_numColunms) * m_spriteData.TextureSize.x &plus m_spriteData.TextureSize.x;
m_vertices[2].uv.y = (m_currentFrame / m_numColunms) * m_spriteData.TextureSize.y;
m_vertices[3].uv.x = (m_currentFrame % m_numColunms) * m_spriteData.TextureSize.x &plus m_spriteData.TextureSize.x;
m_vertices[3].uv.y = (m_currentFrame / m_numColunms) * m_spriteData.TextureSize.y &plus m_spriteData.TextureSize.y;
m_spriteData.TextureSize y x é um valor fixo obtido na inicialização.
Agora posso usar sprites de quanta colunas e linhas eu quiser sem precisar muda o código.
Responder
Clique aqui para fazer login e interagir na Comunidade :)