Hello. I am a beginner, and I want to make an educational game for students of high-school physics.
The idea is having levels with variables the player can determine in accordance with calculations he has made in order to achieve a goal.
For instance, a level in which a ball falls down towards a hoop that is moving horizontally. The player can change the gravity constant, the hoop’s velocity, or the ball’s mass and dimensions (although those will prove ineffective), in order to get the ball through the hoop.
The thing is, I need the physics to be consistent with the player’s calculations.
Is Unity’s 2D physics engine capable of such accurate performance, or would I need to do the coding myself? Is there a way to convert Unity’s length units to meters? How would you go about making such a game? Any tip or suggestion would be great.
“Converting length units into meters” is not a thing. They’re already meters, for all intents and purposes. For example, the coefficient of gravity is -9.81 “unity units per second square”.
Unity uses PhysX for simulating physics, which is one of three or so competing realtime physics platforms. Its accuracy should be sufficient for teaching physics principles and responding correctly to forces to within a significant figure of tenths (maybe even hundredths) of a newton, meter, whatever.
I wouldn’t hesitate to recommend it as an appropriate tool for creating a game or teaching simulation as you describe. However, much of that will depend upon you (or your developer’s) attention to detail, algebraic representations of formulae, and general Unity / programming knowledge.
Anything beyond 101 level classical physics, and this recommendation loses clout pretty quick. I wouldn’t try to lean on PhysX for simulations of atomic or cosmic scales, for instance.