With that, our Enemy and Player interactions are complete. We can deal with damage as well as take it, lose lives and fight back, all while updating the onscreen GUI. Each GameObject is responsible for its own behavior, internal logic, and object collisions, while the game manager keeps track of the variables that govern the game's state.
You should feel a sense of accomplishment at this point, especially if you started the book as a total beginner. Getting up to speed with a new programming language while building a working game is no easy trick. In the next chapter, you'll be introduced to some intermediate topics in C#.