Blade of Jinshu
This project was created with melee combat at the forefront. It aims to replicate combat styles similar to that of Devil May Cry. Blade of Jinshu is my first game to release on Steam.
Combat
Combat felt rigid when first designing this mechanic. To make it feel more fluid, an interpolation system was introduced. When the player is within a specific range of the enemy and the attack button is pressed, the player will automatically and smoothly move to the enemy's position with an offset.
Drones
Creating hovering or flying enemies can be challenging, partly due to Unity not having a built-in system for it. One big problem with creating a drone-like enemy is collision detection. To solve this, I created a simple behavior to make the drone orbit the player. I can then ray-cast along this orbit path and change the orbit direction if an object is detected.
Modular Combos
Performing the same attack moves over and over begins to feel boring. To spice things up, I created a modular combo system. When the player spams the attack button, a different move will be performed for each attack.
A list of possible moves is stored on the player combat component, and the system retrieves information about the attack during runtime.
Each move is stored as a scriptable object. It contains the corresponding animation, as well as the option to adjusting the timing of the animation. For example, an attack animation may have a wind-up that is not wanted. Using the animation cut time, this wind-up can be removed.
Each attack also has options for different mechanics like time dilation, collider open and close time, left or right-handed, and properties for damage and force.
Some attacks can also be flagged as "finisher moves." In this case, input is paused momentarily, while the system correctly positions both the player and current target then plays the finisher animation.
Combat Juicing
To make combat feel even more powerful and fluid, procedural blood effects are created at the point of contact. In addition, a small shockwave and trail effects are played at the player's weapon transform. This greatly improved the feel of performing attacks.
Dashing
I wanted dashing to feel powerful. To achieve this, I used a variety of effects. The first being a lightning trail that follows the player transform. The second being camera shake, and a slight change in the camera's field of view. Lastly, the effect is topped off with a powerful lightning sound effect.
Code
Below is the code used for the player's attacks, where data from the scriptable objects is pulled.