Download

need some help Understanding multigates

Okay to understand what I want to achieve, my blueprints are of an enemy, and when the enemy is dead (hit points = 0) the if statement turns true, this feeds into a multigate, and should cause the delay to start of 2 seconds, and also the other output to start, but heres my problem:

bullet damage = 2
enemy health = 10

So it should take 5 hits to destroy the enemy, which it does; when the multistage ISNT included. When the gate is included i will do 5 hits and this starts the delay but does not destroy the enemy, an extra hit is required to destroy the enemy making the amount of hits to be 6. When that sixth hits the delay doesn’t happen as well. Is there a better alternative to a gate? I just need both outputs to start at the same time. I can’t simply place the delay at the end of the chain as well because I tried that and it doesn’t work. I think maybe my Index? Is wrong, as i’m not sure what that number does.

99b0d7de6069e0aea13579d1c041ba4a48f6c851.jpeg
d1b13263dd11cc90327e0fad1d8cfd28c8857dfb.jpeg

Any help would be appreciated.

hard to see your ss on my monitor but looks like you really don’t need that gate, correct me if i’m wrong.

i’d either hook the emitter at the end of your 2 sets that resets your variables or use a sequence which would probably work in this case if you decide you need one there. (shortcut hold ‘s’ key n click for sequence node/ ‘b’ for branch)

because if i’m seeing it correctly, you already have a branch condition set up to see if the enemy should die or not.

The only problem is that the spawn emitter is the chain that destroys the enemy and other things, if I hooked it up to the part that resets my variables there would be a 5 second delay in everything, that is why I need them separate you see. the spawn emitter chain is there to destroy the enemy and add score, and kill streak. The retriggerable delay is there so that every time an enemy dies, the delay starts from 0-5, if the delay reaches 5 this means you haven’t killed an enemy in 5 seconds and it should reset my variables.

If the branch is true, then the enemy is dead. If the branch is false, then the enemy isn’t dead

k kwl

first have you read what it actually does, here: https://docs.unrealengine.com/latest/INT/Engine/Blueprints/UserGuide/FlowControl/index.html

for instance, from what I can see, setting the index to -1 is the same as saying just fire at start but you have to use the reset to make it go back to the start or 0 output of the node

so I don’t think it’s not setup wrong for your case, just loop the delay back to reset it to the starting output

still not sure this is going to achieve the effect you are after, hard to make out exactly what that is, sorry

and sorry it’s taking a while to get back to post and edit.

have you looked at a regular gate, you could use the delay condition the player has to meet to open or close the gate & then kill the actor!

Maybe if I explained what I want to happen it could help better. The blueprint that you are viewing is for the enemy. The If statement is used to determine if the enemy is alive, or dead. If the enemy is dead then the condition is true. In my game I have a kill streak and a multiplier, so every time you kill an enemy your kill streak is increased by 1 which increases the multiplier which all works fine.

However I want the multiplier to be reset to 0 if an enemy hasn’t been killed in 5 seconds since the last kill. This works, kinda. the gate makes it so that the enemy is still classed as dead but it doesn’t set off the emitter chain, I know this because the enemy isn’t destroyed.

What I want to happen is for the enemy to be killed as normal and a timer to set off after the first kill, say 5 seconds and if I kill another another enemy within 5 seconds then reset the timer to 0 and count to 5 again. If I don’t kill an enemy within the 5 seconds then reset the kill streak and multiplier to 0

This may help you understand, thank you for your time :slight_smile:

lol k think i’m getting it

let your enemy die then afterwards call a timer (set timer to 5 seconds / non-looping) and let it reset your variables if the branch condition hasn’t been met (no other kills during that time - 5 seconds)
if it has been met, fire off your killing streak event

(don’t be scared to use a sequence if you need one in there somewhere, they fire fast)

??? could be one way to set it up :wink:

ps: I hate using delays. they can mess up statement executions if they last too long

edit: not sure but if you were wanting to check each enemy that is killed, lets say every second (in the case that you want to start another timer or time check for the 2nd and so on for every enemy that is killed after the first. you would need a set of variables for each second as well as another timer or in this case, you could use the multigate just use the deaths to fire the multigate (input) then check each in sequence for each condition to be met for the killing spree, every second.

Alright thank you for the advice and all your help :slight_smile: