Picking All Similar Instances

Get help using Construct 2

Post » Fri Dec 18, 2015 6:55 pm

I'm working on a stealth game, and what's a stealth game without secret passages that have to be discovered?

As such, there will be Sprites that will fade to 50% opacity when the main character - FINN - overlaps them.
I have two types of Sprites that I have put into a Family, called Passages. Since the level design will be set in a robotic facility of some sort, I plan to have at least two types of hidden passages (for example, a hidden passage that leads also to a vent shaft - a hidden passage in a hidden passage).

Visualize a room with four passages; two on the left, two on the right, and where the first passage seems to end, there's a passage that continues on farther. Each passway is covered by multiple instances of a particular Sprite (this is so I can manage corners more effectively). When one instance of a Sprite goes transparent, all other instances IN THAT GROUP also go transparent, even if FINN is not overlapping them. It's AS IF those group instances are "one".
So we have passage one (L1), the passage it connects to deeper in (L2), and the two on the right (R1 and R2).
L1 uses Sprite 1 and has a Family instance variable labeled Group with a value of 1.
L2 uses Sprite 2 with Group variable value of 2.
R1 uses Sprite 2, value 3.
R2 uses Sprite 2, value 4.

Now, individually, I can get any group, regardless of which Sprite is used, to render transparent when FINN overlaps that group. My problem is when FINN overlaps two different groups simultaneously. Such as in my illustration here where one passageway connects to another passageway directly.

I'm using an instance variable in FINN in the following way:
FINN overlaps [instance of Sprite] ==>> Set FINN.Group# to Sprite.Group#

PICK all Sprites where Sprite.Group# = FINN.Group# ==>> ......and so on.


I recognize that this set up only allows FINN to recognize ONE passageway to be identified.
And that's where I'm having my trouble. I need to have all applicable groups activated.

Can someone suggest a solution, please? What am I not seeing? THANKS!
I'm seeking Narnia. Who wants to come with me! Aslan is on the move!
B
132
S
22
G
8
Posts: 770
Reputation: 14,584

Post » Fri Dec 18, 2015 7:51 pm

You could use a variable to temporarily store the current group as you loop over the passages you're overlapping like this:

global number curGroup=0

finn: overlaps passage
for each passage
--->set curGroup to passage.group
--- pick all passage
--- passage: group = curGroup
------> passage: set opacity to 50
B
88
S
30
G
89
Posts: 5,107
Reputation: 60,325

Post » Sat Dec 19, 2015 2:25 am

@R0J0hound - I thought I tried something like that earlier day, buuuut, maybe not THAT.
I'll test out your example and see if that flies. Thank you, good sir... I'll get back to you if it still fails.
I'm seeking Narnia. Who wants to come with me! Aslan is on the move!
B
132
S
22
G
8
Posts: 770
Reputation: 14,584

Post » Sat Dec 19, 2015 3:01 pm

Okay, maybe I'm not understanding how you described your suggestion above, but I'm not getting things to work.
At best, I'm able to get groups of instances (when they're related by group #) to shift as I intend. BUT, when FINN is overlapping two groups that are side-by-side (such as what I attempted to describe in my OP), so long as FINN is overlapping the first group, the second group remains unaffected until FINN is no longer overlapping the first.

And that's to say nothing of getting the groups to go back to opaque when FINN is no longer overlapping any instance of a group.
I'm seeking Narnia. Who wants to come with me! Aslan is on the move!
B
132
S
22
G
8
Posts: 770
Reputation: 14,584

Post » Sat Dec 19, 2015 4:00 pm

ImageImageImage
B
71
S
20
G
190
Posts: 3,534
Reputation: 108,342

Post » Sat Dec 19, 2015 11:19 pm

You two are miracle-workers. That's exactly what I'm aiming for.
I'll just adapt what you worked out to reference the Family object I have and swap out the instance variable for the local variable instead. I think what was throwing me, in particular, was the use of the Pick All system condition. That didn't make sense to me since I didn't want to go backwards (as it seemed) and select every instance yet again. But now that I see it on the Event Sheet, I believe I see the logic behind it now.

Thank you both so much. You've always been patient and kind and supportive. GOD BLESS AND MERRY CHRISTMAS!
I'm seeking Narnia. Who wants to come with me! Aslan is on the move!
B
132
S
22
G
8
Posts: 770
Reputation: 14,584


Return to How do I....?

Who is online

Users browsing this forum: ilyaTyl and 9 guests