Grapple Gliders - Sprint 3

  For this sprint, I worked on creating two enemies (homing and shooting enemies) and a goal watchtower. The enemies were leftovers from the last sprint, but the homing enemy was much more developed than the shooting one. Most of the mechanics of the enemy were simple to implement, but making sure everything was attached correctly in the Unity scene was a little harder. In this sprint the player and the camera were split into different objects (they were children of an empty object before) and that resulted in my enemies either messing up when detecting the player or not being able to deal damage to the player. I made an “attacked” function that would trigger whenever an enemy or a bullet hit the player, and getting the enemies to access that was a little more annoying than it needed to be.

The homing enemy was not too difficult as most of how you get it to home in on the player is just a line of code that makes the enemy look at the player and another that makes it move towards the player.

Getting the enemy to move between a range of values seemed to be much harder. I had a problem where it would get stuck when it hit the end of the range. It seems like it still gets stuck sometimes after the homing action is triggered, but it goes away if you trigger the homing action again. This enemy was easily able to trigger the “attacked” function, but at this point it was still a little too aggressive. And because of that, the enemy would keep ramming the player and the “attacked” function would actually trigger after the player moved away from it. To remedy this, the enemy would make the player bounce off it.

The shooting enemy felt way harder for me than it needed to be. At first, I wanted to get the cannon looking at the player and shoot, but then the rotation of the cannon during gameplay was really weird as it looked at the player, so I decided to do away with it. I mentioned last sprint that the bullet shot out wobbly for some reason but after that one time it didn’t happen again so not sure why that was a thing. I had trouble getting the “attacked” function to activate when the bullet hit the player cause I wasn’t able to attach the script that function was on through the inspector. Luckily, my lead was easily able to help me remedy that with a singular line of code. I had a problem where the coroutine for the bullet shooting wouldn't stop when the player was out of range, so I had to use StopAllCoroutines() to make it stop. I suppose it's fine for now, but I feel like this isn't the right way to do it.

The goal watchtower should have been incredibly easy to get up and working but for some odd reason that turned out to not be the case. Before playtest day, I quickly popped in a goal screen that said “You did it!” when the player landed on the platform, and I specifically remember that working fine. On playtest day the goal screen did not show up at all but then while I was working on it in class, it was fine! And then right before the end of the sprint, this was the one thing preventing me from finishing it off. I’m not really sure what the problem was either because neither collision functions or trigger functions worked. The problem might have been that I was using the platform detecting the player to make the goal screen show up, so to fix it I made it so that the player detects the platform. I’m not really sure why the change made it work, but at least it works.

    Going forward, since our group is without one person, me and the lead will have to take on some more tasks. Although, looking at the burndown chart, it seemed like we were doing ok. It's slightly easier to communicate because we can split the tasks into coding or level design. I'll be doing more level design instead of coding since I'm not as good at it compared to the lead. We could probably get more tasks done since the lead can get the difficult coding parts out of the way much faster.


Comments

Popular posts from this blog

Aftershock Simulator - Sprint 16

2D MegaMan Level 2 Feedback (10/27/21)

Chicken Scramble - Sprint 1