How to handle a collision with a family in an effective way?

Get help using Construct 2

Post » Mon Feb 20, 2017 12:39 am

Hello,

I have a problem with a - seemingly - simple problem.

Let's say a bullet hits an enemy. All enemies are in a family because there are always the usual actions (like destroying the bullet and the enemy etc.)

But some enemies are different, they have a different behaviour or an effect which has to be disabled while "dying" and so on..
Let's say there is EnemyFamily1, and Enemy1 has a "Sine" behaviour (and the family has not), Enemy2 another behaviour..

The condition (on collision with EnemyFamily1) won't allow me to set specific behaviour for Enemy1 (every action regarding Enemy1 will change ALL instances of Enemy1.. and not only
the instance which was part of the collision...

What is the solution for this problem without checking for the same collision for every different enemy type? I mean, families are meant to avoid redundant code right? But how to
achieve this if I cannot "break down" the object types in the collision handling with the family?
B
16
S
6
Posts: 26
Reputation: 1,221

Post » Mon Feb 20, 2017 1:45 am

You can use a subevent to "Pick by UID" for each object in the family and perform your actions. Since only one of those can possibly pick anything, only the relevant code will run.

http://www.blackhornettechnologies.com/Construct2Stuff/FamilyToObjectPicking.capx

Drag the yellow sprite over each purple and green sprite. Purples turn clockwise, greens turn counter-clockwise.
ImageImageImage
B
71
S
21
G
229
Posts: 3,686
Reputation: 128,336

Post » Mon Feb 20, 2017 12:15 pm

Wow, thank you.. I've seen these "Pick" methods, but couldn't wrap my head around their implementation... Your example is perfect! Thanks!

Only problem which remains is the order of actions which are to take.. As I said, I've some actions which are only fitting for some of the family members, I can pick them by UID in a subevent now (thanks to you), but the actions for the family itself are already done at this point.. which is unfortunate in my case. Let's say the last action of the family "EnemyFamily1" is "Destroy", then in the subevent the picked "Enemy1" will never see an action.

There is no way to "get back" to the family after drilling it down to the family member in the subevent via the Pick method, or is it? There's "Pick all" method but I think that means something different.

And starting another event.. well, as I said, I want the whole collision handling with the bullet in one event, seems the best solution to me...

EDIT: Okay, MAYBE I've found the solution myself.. I first write all the actions for the family which can be done at the start in die beginning, THEN create a subevent and pick the right family member, perform the actions regardings the family member, THEN create another subevent and Pick the Family via UID again and perform the rest of the actions regarding the family...

At least that's a solution which worked for me.
B
16
S
6
Posts: 26
Reputation: 1,221


Return to How do I....?

Who is online

Users browsing this forum: eochranek, fearfulelephants and 20 guests