Spawn an object in the exact spot where 2 objects collide?

Get help using Construct 2

Post » Mon Sep 07, 2015 8:50 pm

Hi All
this is my first Post, also my first time working with Construct 2, I've came with this concern, maybe this problem is solved somewhere on these posts, and it's so easy to fix, anyway, I'm working on a project which is a game that involve a collision of two object and that action such causes a creation of other object.. But I don't know how to specify that object spawn in certain spot (the point that those two object touch themselves!)
Putting this more easily to understand, imagine a Ball hitting a big wall, and when the ball hit, it bounce back
Ball=object
Big wall=object
Ball bounce=the object that spawn


any help?
thanks in advance!
sorry my bad english (not my mother language)
B
4
Posts: 4
Reputation: 213

Post » Mon Sep 07, 2015 9:26 pm

I'm not sure that construct gives you any way to work with collision data at all. As far as I've seen it only allows you to collect the fact that a collision has occurred. A less accurate method would be to collect the x, y position of the object you are colliding with and spawn the object here...

A more accurate way would be to create your own buffers, or sensors. Little objects so far away from the object like, tiny clear squares, and then spawn the object at the location of the square the hits.. This would be tricky and require some overhead, because you're going to have to turn off the sensors as soon as there's a collision, and then turn them back on when they are overlapping nothing but the ball... or set them some pixels away from the ball..

Honestly, neither seem really professional. I'd like to see the proper answer for this. I've yet to see anyone talk specifics on collecting collision data...
B
7
S
2
Posts: 92
Reputation: 663

Post » Mon Sep 07, 2015 9:49 pm

For purposes of speed, collision detection between two objects generally terminates once a single point of intersection has been found. Since you can't guarantee that the first detected point was the only point of collision -- or even representative of the average -- the locality of this point is of little use.

Really, you'll have to handle this on a case by case basis. It's easier to approximate a reasonable point of collision between simple shapes than complex ones, and different mathematical models will be useful for different combinations of shapes.

In the case of a ball hitting a wall, you can use the radius of the ball and its angle of motion to approximate the point of collision using some basic trigonometry.
Moderator
B
113
S
41
G
20
Posts: 1,586
Reputation: 19,106

Post » Mon Sep 07, 2015 9:51 pm

The chipmunk physics behavior has a way to get the point of collision, but other than that you'll have to calculate it yourself for anything else.

For one idea you could look here:
viewtopic.php?f=147&t=152906&p=964827&hilit=normal#p964827
That capx has a way to calculate a normal. If you create an object at the ball, and then move it by the radius in direction of the normal with the "move at angle" action, then you should get a point of collision.

I'd make a capx but my pc seems to be dying bit by bit and C2 has been the latest victim. I'll see if a reboot helps.

For the absolute most precise way you could use the SAT (separating axis theorem) on the ball and wall. That's usually used for resolving a collision, but it can also give you the point of collision. I've made some capx's of it elsewhere on the forum.

Or you can do the math directly. Find the formula for the distance between a point and a line and use it to find the distances to the four lines of the box, only check that the point if projected on it land within the segment, then find the distances from the four corners. The closest of any of those will be the one you use to get the normal and collision point.

I've done both before, and they work well although can be a bit complex to setup. An approximation is usually good enough as with the first idea.
B
91
S
31
G
103
Posts: 5,235
Reputation: 67,756

Post » Mon Sep 07, 2015 10:23 pm

thanks all for the replies, I had used the JeremyBenson advice, I used littles transparent squares all long the "wall" to set the hit spot, luckily all the hit spots of the wall are way long the X.. so, I forget the Y axis.. BUT... the thing is now the "BALL" hit sometimes two squares spawning the "Bounce object" duplicated.. :(

Image


a little help please
B
4
Posts: 4
Reputation: 213

Post » Mon Sep 07, 2015 11:19 pm

I thought he meant objects positioned around the ball, but I may be wrong.

Anyway's here's an example of the first idea i had:
https://www.dropbox.com/s/1btz21f1ny84g ... .capx?dl=0
It's good enough for the bullet behavior because the bullet behavior doesn't have perfect bounces either.

More precise stuff here, if you're ambitious.
viewtopic.php?f=148&t=91829&p=718888&hilit=SAT#p718888
B
91
S
31
G
103
Posts: 5,235
Reputation: 67,756


Return to How do I....?

Who is online

Users browsing this forum: Bro7hers, Kenthria, mikehive, plinkie, Yahoo [Bot] and 12 guests