Collision Detection & Response

Started by
1 comment, last by 3TATUK2 10 years, 5 months ago

When doing collision detection and response -- is it *necessary* to first find the *closest* colliding triangle before pushing back and recursing, or can you just push back on the first collision triangle you find?

Advertisement

So I'm trying to figure out the proper way to handle collision response and iteration in a case like this . . . I keep ending up getting pushed through the floor by the diagonal wall:

[sharedmedia=core:attachments:18727]

can you maybe review this collision detection/response logical pseudocode and possibly point out any fundamental flaws?


checkTriangles(start, end):

	collision_distance = infinity
	collision_occured = false

	for triangle in triangles:
		if check_collision( triangle ):
			if triangle_distance < collision_distance || collision_occured == false:
				collision_distance = triangle_distance
				collision_triangle = triangle
				collision_occured = true

	if collision_occured:
		end += collision_triangle->normal * pushback_factor
		checkTriangles(start,end)

ok, i figured out the problem.

since it was a point-position instead of swept test, the FPS would drop dramatically when the recursion depth increased so the timestep was big, forcing it through the wall. seems to work now. :>

This topic is closed to new replies.

Advertisement