Because of the nature of clicking to move forward, there was no way to move back. Rather than figure out how to move back (especially since you can just turn the camera around) I felt it would be a better use of time to implement a dodge system. The player simply holds Ctrl and the direction they want to move and they will launch in that direction. Also added was a blocking system, although this was later found to be unnecessary and was scrapped. The IsDodging boolean worked as a cooldown system.
In order to get the player to move around faster, I added a leap function. First, holding leap enables grab, a feature covered in the next BP. When released, a check is made to make sure leap is not on cooldown and if not, sets it so. A 3 second timer will start as the cooldown begins, the grab will disable and check to see if the player is perched (covered below). If they are perched, the player will drop down, and biting and swinging will reset along with gravity. If the player is not perched, they will launch into the air as long as they are not "flying" already. (I now realize checking Z Velocity to be zero would be more efficient). The Land custom event simply runs when the player hits the ground, and plays a sound cue asa well as letting the player use their abilities.
The perch points allow the player to perch atop a tree and look out upon the environment. During this time, attacks are disabled and a post processing that brightens the area takes effect. The blueprint checks to make sure the player is grabbing, and if the player overlaps the stickArea, velocity and gravity are set to 0 and the player is locked in place. When the player chooses to drop, the Leap in the player blueprint takes over.
I added fire in order to add some obstacles to the game that weren't enemies. Basically if the wendigo gets close to the fire it kills him, setting him ablaze and burning him over time.
After having multiple issues with the previous movement system, I reworked a lot of the mechanics. I basically deleted the teleport system and created a timeline that adds value to movement input in the forward direction of the player. After that, terrain detection was implemented with line trace. The line trace detects different types of ground and plays different sound effects based on the hit results. The correct footstep sound will play once and then loop back around to play it again.
A simple sprint system was added to let the player get around faster. It changes movement speed as well as the sound effect speed of footsteps.
In order to keep updates on multiple functions that needed to be updated constantly, I created a tree of timers. In retrospect, a lot of functions probably could have been set to update as-needed, however the method worked with little to no performance hits. Every function is set to a timer which updates at unique timed intervals.
The Hunger function runs multiple scripts at once. First, it checks if the player is sprinting and if so, lower health. Second, it checks the status of health. If it is less than 30%, a post processing effect will kick in that blurs the screen and makes it hard to see. It will get gradually more intense as the player loses health. There are no health bars in the game, the player gauges their health level by the effects on screen. We wanted to be original in the way the player receives information. It felt more practical to give a wild beast a hunger that needs to be constantly monitored instead of the common health bar.
Smell is an ability added in this build that allows the player to highlight important objects in the environment that would otherwise be hard to see. The blueprint starts by checking if the ability is on cooldown (once again, DoOnce may have worked better here). If it is ready, a post processing effect kicks in which adds an intense bloom as well as a high field of view to the scene as the wendigo gets an intense whiff of his surroundings. The timeline allows the post processing and FOV to gradually reduce.
The scent trail is a planar actor that is placed on the ground to react to the smell ability. A dynamic material instance is created for the plane which is set to the material index. The user draws the trail in the editor using vertex painting. This trail is are of the plane that will glow when smell is activated. The function checks if the wendigo has smelled. If it has, It sets visibility to 1 (this is linked to opacity in the editor) and turns to the color chosen by the user for the instance. Different colors represent different things, which are points of interest, enemies, and food. If not, visibility is set to 0 and nothing is shown.
General Update Function
This contains multiple scripts that do various different things. First, it returns hunger to 100% if the float goes about that number. Then, it kills the player if health hits 0. The same function runs for the hunger post processing and stored food (something that gets scrapped in the next build). There is also a check to see if the player leveled up as well as if they are perched which enables and disables a post processing effect. As stated before, this was an extremely interesting yet ineffective way to run blueprints and something that I learned not to do in the future.
The Breathing function simply creates a breath particle at certain intervals. It will only display if the player is low on health, something that was later scrapped to just run all the time.