One project I’ve considered working on is some kind of board game. To play a board game, you need dice, of course. It’s quite simple to just generate a random number, and say “You rolled a 6!”, or whatever the result is, or even to use that randomly generated result to play an animation. But it’s more fun to actually roll the die.
Rolling a die is pretty easy, too. Create your 3D model, apply a force and torque to throw and spin it, and wait for it to stop moving. Of course, the computer can’t just look at the face that it lands on and read the result.
There is probably some way to calculate the facing of the die by performing some three-dimensional geometry on the rotation of the object, but I chose a simpler method; I just attached a trigger collider to each face of the die, and when program detected that the die had stopped moving, it sent a Raycast straight up, and checked which of the faces it hit.
Of course, your program needs feedback, and since there’s no game to read and use the results of the die, I instead created a particle emitter that would show the results, allowing me to manually check that what the program thinks the result is matches the actual results.