This week the work continued on the core systems of the game. Just to recap, last week I was able to implement a basic ability system, basic attacks, a bunch of utility scripts for combat, as well as a stats system for our characters. This week all of my tasks focused on fleshing out the ability system.
The tasks for this week were as follows:
Ability Queue – When an ability is selected for use, the ability should wait until the mouse is clicked on a target, direction, or target area. This is based on what kind of ability is being triggered.
Ability Targeting projection – Trajectory projection for projectile abilities, area projection for AOE abilities, and a line projection for ray cast abilities.
Instant AOE type Ability – An ability that is spawned on the ground on click. It has range, radius, and cool down parameters.
The ability queue implementation came down to adjusting the AI controller for the player units. In the ability cool down handler a bool is switched on that lets the AI controller know it should disable movement until the ability is fired off. This also meant rearranging a few things in the ability cool down script. Namely the abilities firing needed to be delayed until another input is used. In addition to this there needed to be a way to cancel the ability aiming “clearing” the queue. The aiming for each ability is handled based on its type. Projectile abilities simulate a path, AOE abilities show a radius where the mouse is pointed, and the targeted abilities can only be used on characters and enemies.
Here is an example of the targeted healing ability being used on some friendlies.
The ability is selected then targeted on a friendly. Once fired the ability spawns a projector above the teammate as visual feedback. It is simply ray casting from the mouse screen position into the corresponding world space and checking for the player layer.