Para decirlo sin rodeos, es detección de colisiones. Si eres tan detallado como escribir el código, depende de lo que uses para implementarlo. Por ejemplo, DIRECTX, una biblioteca de desarrollo 3D basada en VC. , detecta la distancia entre entidades, si la distancia devuelta es menor que la suma del radio de la colisión de las dos entidades que rodean las esferas, entonces el cuadro no avanzará en la dirección de la velocidad del personaje.
De hecho, juegos como el suyo se pueden desarrollar utilizando motores de física, lo que reducirá en gran medida la dificultad de desarrollo y mejorará en gran medida el realismo de la simulación. Se recomienda PhysX, un motor de física basado en OpenGL.
Lo mismo ocurre con 2D, no es más que obtener la distancia entre objetos para comparar y aplicar los cambios correspondientes según la comparación.