Game Development Community

Trigger overlaping other shapes prevents colisions from those shapes

by David Ezell · in Torque Game Builder · 03/18/2009 (9:40 am) · 10 replies

Example:

A player object is inside a triger that overlaps other objects that the player should colide with.

Moving into one of these objects, the player will penetrate up to the edge of the trigger more or less, and the collision between player and the object will not be processed.

About the author

Recent Threads


#1
03/18/2009 (12:35 pm)
This is a really old bug that was fixed in RC2 of the pre-1.0 T2D. It was first reported here in 2006:
www.garagegames.com/community/forums/viewthread/46138

Must have reared its ugly head again.
#2
03/19/2009 (4:53 am)
That old bug does sound very similar.
--
Unfortunately for me, my project requires extensive use of triggers placed very close to "solid" objects.
--
If I find a work around I'll be sure to post it here. If anyone else has any suggestions as to a work around I'm all ears.
#3
03/22/2009 (12:21 pm)
Use differing graph groups for triggers and the objects inside them. Also create another object of the same graph group of the trigger that is linked to the object. Messy, but it gets the job done.

Think of the triggers as "spiritual force" while the object that interacts with the trigger as the "spirit". Normal everyday "bodies" can't interact with either.
#4
03/24/2009 (7:00 pm)
That is kind of grotesque Eric, but it may actually be better. Hitting these triggers is a good thing for the player, so having a larger collision area for that vs staby objects, and obstructions would be nice.

Thanks for the suggestion :)
#5
05/22/2009 (5:28 am)
The way the collision works is kind of complicated and hard to summarise but essentially, when an object sends collisions, it will result in a series of potentials which are reduced down to a set of actuals. The system then determines which one will occur first in time then process that one.

This wouldn't be a problem but if you are overlapping an object, then that occurs at zero-time and so always "wins". Again, this is fine until you consider that the t2dTriggers are an oddity in that you expect to overlap them but you don't really want them to "win" in the collision-detection game.

In this sense, they're like a "special" collision that should still be processed as a priority but should not exclude the next in line.

I have already looked at this problem and am thinking about modifying the procedure for the "special" case where you collide with a t2dTrigger at zero-time (or first non-zero time). The new procedure will be to process the trigger but continue processing up the collision-chain until a non-t2dTrigger is found, at which point, the original procedure applies.

This change should result in t2dTriggers not absorbing collisions.

Ref: TGB-296

#6
06/18/2009 (6:15 am)
This problem has been resolved and will be in the next release.

I just wanted to add that this problem was because of the reason I highlighted above in that overlaps get a high priority (for obvious reasons) and only a single object is processed each iteration.

Ref: TGB-296
#7
07/02/2009 (7:36 am)
Thanks Melv. Great news that this is resolved! Is there any timeline when the fixed version will be available to us? We have a game coming out in about 6 weeks and could use this.
#8
07/04/2009 (8:54 am)
Unfortunately I have no dates for release right now.
#9
07/24/2009 (12:56 am)
A work around that may work is using a proxy sceneobject (sprite using a transparent png) with the collision boundary set how you need it. Then use it's collision callbacks. Not sure if this implementation would have the same issues as the trigger or not but would be easy to test to see.
#10
05/01/2011 (10:45 am)
This still seems to be a problem in TGB 1.7.5
Also triggers within triggers also are ignored.
Could we have an option in the trigger to say always process other objects or something?.
Can you point me in the right direction of where to start looking for the code to alter. Its been a long time since I did C++, but this is something I realy need for my latest behavior for lightmap blending.