Testing some Initial Ideas
At this point we were coming up with some ideas based on gameplay and mechanics but were struggling to put a finger on one, so we decided to prototype some ideas to see how they might actually play. We wanted to work on the story book transition idea first as we were having trouble visualizing it.
We decided that we wanted the player to have some sort of control instead of just going through an animation so we decided to add some interactive elements in the storybook gameplay like hovering over the book to reveal some sort of rune which you can interact with to uncover text and eventually play through a simple 2D level. Abbie decided to make a simple animated prototype while I started to make a prototype in Unity. We wanted the player to feel like they were in a storybook as our main character Maive narrates the story as you play along.
Unity Prototype
On the other hand, I was having trouble deciding the most efficient way of dealing with text transitions and interactive elements. I tried using Unity's Text Mesh Pro for implementing the text but i felt like there could be a better way of doing it. For the sake of rapid prototyping I used Unity's Particle System to quickly implement the text elements. The prototype was to show how you can interact with the story book world by uncovering runes and playing through the story as the story is being told along the way.
The most important thing was to have some sort of visual feedback telling the player that its a special rune and to do that I added a simple gradient to the Color over Lifetime tab. I asked some of the students around if they could identify any interact-able text among the rest of the text and it was clear that people could identify which piece of text they could interact with
After setting up the particle systems for runes and text, I started scripting them. I made different particle systems for each section of the prototype that will activate and deactivate when needed. I have a fair amount of experience with scripting particle systems so it did not take me long to write this piece of code.
In the start method I decided to stop all the particle systems so I could activate them one by one as the player discovers them by hovering the cursor over the book. detectors[0, 1] is a gameobject that stores different triggers that trigger specific particle systems when the mouse cursor collides with them. This made it so that I do not have to time anything but rather wait for the player to discover these triggers.
The triggers are a cube with the Mesh Renderer set to false so you can not see them in-game.
The next thing I had to do was making it so that the system could read my mouse position in game and to do that I needed some assistance so I did some research online and found some articles and videos that explained how this can be done in C#. This made it so that I could use my mouse movement in world space and the Vector3.Lerp made the movement smooth. Also, I made it so that the Mouse does not calculate the Z-Axis and moves only in the 2D plane (X-Y Movement). I attached a Cube to the mouse movement and added a trail of particle system to it so that the player knows where the cursor is moving also adding some nice visual feedback to the entire thing.
Next thing was to make all the triggers work and have a logic that allows activation and deactivation of these triggers and particle systems so the player cant speed run through this. In total there were three things player has to do.
1) Find the runes
2) Interact with them by clicking on them to reveal the text behind it
3) Character runes turn into playable 2D characters that the player can control.
So far I have designed the Rune particle systems, Triggers and the Mouse movement. For the implementation of this design I used a structured if-else logic that enables, disables and destroys gameobjects after one task is completed.
As mentioned earlier, everything initially would be set to false except for detectors[0] which is the first trigger. After the player finds this trigger it deactivates this triggers after 1.5 seconds, while activating detectors[1] (second trigger) and the rune. The player can now find the second rune and after doing so the second trigger is deactivated, revealing the final rune. Now the player can interact with the Text Rune to reveal the text behind it.
To detect a mouse click, I used a Raycast to find any gameobjects that it hit and used that information to activate the Script enabling the player to read through the story. After a few seconds of reading through the story, the character rune would come to life which the character can control and play through the story. Just as a final touch, I also added a little visual feedback for when the character collides with the triggers to let the player know that they have achieved the hurdle.