Input Manager & Physics
Unity's input system makes multiple control schemes easy to implement. Through its use, I was able to make this simple demo that shows off two players using two unique control schemes in a modular form. The physics system is powerful, but proved to be difficult to utilize after many failed attempts to get the expected behavior out of the two characters.
My favorite part about Unity's input system is how it can be used to easily integrate controller support or other control methods in addition to regular keybindings. In order to recreate local multiplayer, I created two separate input profiles with different control schemes. Each character has a movement and throw method, and at the start of the game they each subscribe to their own input profile, assigning the respective methods to the movement and throw inputs.
​
Physics was more difficult to get a handle on. I made several failed attempts at handling the character movement through various force applications, but overcoming friction and getting the character to stop at the right time wasn't responsive enough. I ended up using RigidBody.MovePosition instead. The ball was also given a new physics material that gave it its bouncy properties.