In the last week, we’ve implemented transparent walls and the player animation state machine. Max continued designing sprites for the game and Andrei implemented the bomb animations and it is working on some enemies. The next week I will try to implement and finish the UpgradeManager, a Singleton class that shall handle the dispatch player powerups.
The transparent walls were implemented using Raycasts the wall will cast a ray in the up direction and if it detects the Player collider it will reduce it’s alpha value to 50%, when the ray doesn’t collide with anything the alpha values goes up to 100%. In the following picture the raycast is drawn with a red line:
When I first attempted to do the player animation state machine I got lost very quickly and I quickly abandoned the idea. I tried implementing it with a blending tree, hoping that it would work that way but it didn’t.
Blend Trees are used to blend multiple animations smoothly, when you have a walking/running animation in 2D you’d like to play the “WalkLeft” animation when X is -1 and Y is Don’tCare. To achieve this Unity gives us blend trees:
The problem with this approach is that it doesn’t work when you have idleLeft and runLeft, because the blend tree doesn’t know what idle to pick when both X and Y are 0. After taking a break the solution just popped into my head: Use a state machine instead of a blend tree. From any state you can go into the RunX state but after you’re done with the RunX state you’ll transition to IdleX.
This works as expected but with a tradeoff, you can’t move in diagonals. Each transition has a rule for AnimationX or AnimationY attached to it, and if you change both X and Y at the same time you randomly jump to RunX and RunY animations, making it look like a glitch.
In Unity X and Y are custom parameters for the state machine, it doesn’t necessarily need to be the X and Y position of the game object. You can tweak your movement handling code to set AnimationX and AnimationY to prefer the max of those two and set the other to 0.
To work collaboratively on this project we use Github for code and Google Drive for assets sharing.
If you want to use Github for your Unity project I’ll recommend that you generate a proper .gitignore file.
Thanks for reading!
In case you’re wondering from where the title MAD comes it just comes from our names: Maxi, Andrei and Denis. Since this is our first game and out first attempt in doing something together I had no idea what name to chose.
In this devlog I’ll try to keep you updated with the latest state of our game. Since we all have full-time jobs, we’ve been working on this game only on our free time.
I’ve been implementing the world generation code and since I hadn’t any Sprites for the walls available, I’ve made my own ones in Aseprite.
Using the Sprite from above I’ve created two prefabs in Unity and I’ve changed the colour of one prefab to brown, the generated world looks like this:
The player sprite is also my doing.
A few days later I’ve received the wall sprites from Max and I imported them in Unity.
The reason the sprites look so small is that Max designed them so they can overlap but we’re not exactly sure how we’re going to do that, since this game is based on a matrix grid adding overlapping sprites to it might make it a bit confusing.
Here are some pictures on how the game would look like with overlapping.
Andrei took the heaviest task to get the bombs working. He was struggling with Raycasting, Coroutines and the 2D Physics system from Unity. After some time he managed to get it working. The bombs are placed and explosions are spawned, it still needs a bit of polish.