Once you have a physics simulation, creating realistic interactions with objects becomes a lot easier. Physics makes objects behave like the real world, so it can also make them interact like the real world. All we need to do is make our users' interactions work with the physics. Real world physical interactions are all about picking things up, moving them around, and putting them down again, though if you want some more dynamic physics, we can drop them or throw them. Picking up an object is essentially selecting it. As we've seen, if we have a hand-tracked controller and we are working at arm's length, this can be very realistic. We can pick up an object by reaching out to grab it. We can implement this using collisions. If my hand enters the collision geometry of an object, then I've grabbed it, though I'd probably also want to click a button to confirm. But it doesn't have to be at arm's length. We can pick up an object using stretched go-go interaction or by ray casting using gaze direction. Once we've picked up an object, we can manipulate it. That means linking the object to the user's hands. The object can be attached to the position of the controller and move and rotate with it. This makes it interact like a real object. I can move it and turn it in my hands. You might want an object to always be held in the same way. For example, I always want to hold a tennis racket by the handle. You're likely to want to turn off some of the physics. You don't want the object to be affected by gravity if you're holding it. Unity can make objects kinematic, which means there're still physics objects but they aren't affected by external forces like gravity. This can be really useful particularly because kinematic objects can affect other physics objects. So you can hold a tennis racket and hit a ball with it and the ball will bounce off the racket. You've just made a VR tennis game with just a couple of physics objects. Once you've finished with an object, you put it down. You need to signal to release the object. One of the easiest ways is if you pick up an object by pressing a button, you can hold that button down until you're finished and release the button to drop it. When you put an object down, you can turn gravity back on so it will fall to the ground. You can also give it a velocity based on how your hand is moving, which means you can throw it. Physics is a great way of creating realistic interactions with objects in VR. They feel like the real world. And if nothing else, throwing things around in VR is just a very fun thing to do. Some of the interaction techniques can take a bit of tricky programming to get right, but luckily, there are some really good plugins that will do a lot of the physics-based interaction for you. I'll put links to them in the readings below, so you can start playing with VR physics straight away.