Alex.SilR

RSS

Today I started making a change in the look of sync, as I want to focus on the mechanics at the time I did everything a chess texture. I was pleased, because became standardized and acceptable.

Hoje comecei fazendo uma mudança no visual do SinC, como quero focar na mecânica no momento fiz tudo de uma textura xadrez. Fiquei satisfeito, pois, padronizou e ficou aceitável.

Then I started to build a level of one of the possible modes of play. The goal will be to put cubes of each color to its respective place (call stand) with the shortest time possible. The count will be progressive with precision of hundredths of seconds.

Here comes one of the main mechanics of the game, stop time.If the player press Shift the time stops, “Freezing” all the movements of the cubes and projectiles in the scene. When the player shoot with the time stopped the projectile will be stopped and will come be to its trajectory when the time starts flowing again.

Using the stop time the player will be able to better analyze and give shots synchronized, which will make, strategy and calculation of the force of the projectile (mass x speed), be a major factor in the total time of the level.
When a cube is thrown out the level time will be added to the total time as a penalty.

In this video you can see how this game mode is. (In the video doesn’t have the time yet).

Depois comecei a montar um level de um dos possíveis modos de jogo. O objetivo será levar os cubos de cada cor para seu respectivo lugar (chamo de stand) com o menor tempo possível. A contagem será progressiva com precisão de centésimos de segundos.

Aqui é que entra uma das mecânicas principais do jogo, a parada de tempo. Se o jogador apertar Shift ele para o tempo, “congelando” todos os movimentos de cubos e projéteis presentes na cena. Quando o jogador atirar com o tempo parado o projétil ficara parado e retomará a sua trajetória, assim como todos os outros objetos parados, quando o tempo voltar a fluir.

Usando a parada de tempo o jogador vai poder analisar melhor e dar tiros sincronizados, o que fará com que a estratégia e calculo da força do projétil (Velocidade x Massa) seja um fator principal no tempo total do level.
Quando um cubo for jogado para fora do level será adicionado um tempo de penalidade no tempo total.

Nesse vídeo da pra ter uma ideia melhor de como é esse modo de jogo. (No vídeo não tem a contagem de tempo ainda).

Doing the logic of game winning I found two bugs that was difficult to resolve.

The first was more a lack of my attention. After putting a Trigger in the level the cubes began to move in strange ways (video below).

Fazendo a lógica de vencimento do jogo encontrei dois bugs que firam difíceis de resolver.

O primeiro foi mais uma falta de atenção minha. Depois de colocar uma Trigger no level os cubos começaram a se mover de forma estranha (vídeo abaixo).

At the end had nothing to do with the Trigger. What happened is that sometime before I added the DontGoThroughThings in the cube for it not pass the walls of the stand, but I ended up using the same layer that the cube is (In the script DontGoThroughThings the object using the script cannot be in the same layer that it will check the collisions). And as I was only testing after I added the Trigger I was thinking that the problem was with it, it was difficult to find the real problem.

To resolve this, as an object cannot have two layers, I had to use a workaround I found on the internet. Duplicated the object, removed the Mesh Renderer and placed as a son of the duplicate. Put a different layer in the duplicate. I didn’t like this solution, but for prototype work, so I’ll leave to search for a better solution later on.

The second bug, which was easier, but it also took a while was that at certain points the gun was becoming unaligned with the projectile, it happened because of some Triggers that was inside of the stand and took them rayCast. To solve this just use layerMask and pass as argument in the rayCast that it ignores this layer. But I’ll leave it to do tomorrow.

No final não tinha nada haver com a Trigger. O que aconteceu é que algum tempo antes adicionei o DontGoThroughThings no cubo para ele não passar das paredes do stand , mas acabei usando a mesma layer que o cubo está (No script DontGoThroughThings o objeto que utilizar o script não pode estar na mesma layer que ele vai verificar as colisões). E como só fui testar depois que adicionei a Trigger estava pensando que o problema era com ela, ai foi um parto pra achar o problema real.

Para resolver isso, como não da para um objeto ter duas layers, tive que usar uma gambiarra que achei na internet. Dupliquei o objeto, removi o Mesh Renderer e coloquei como filho do duplicado. Nesse duplicado coloquei em layer diferente. Não gostei muito dessa solução, mas para o protótipo funcionou, então vou deixar para pesquisar sobre isso mais para frente.

O segundo bug, que foi mais fácil, mas demorou um pouco também foi que em certos pontos a mira estava ficando desalinhada com o projétil, isso aconteceu por causa de umas Triggers que tinha dentro do stand e o rayCast pegava nelas. Para resolver isso basta usar layerMask e passar como argumento no rayCast que ele ignora. Mas vou deixar para fazer isso amanhã.