Score problem when multiple enemies are destroyed at the same time

0 favourites
  • 7 posts
From the Asset Store
An educational game for Times Table. An easy to use template for developers to build larger games
  • I'm using construct 2. My game has a scoring system that awards more points when 4 enemies of the same color are destroyed in a row. The basis I created works fine but there's a problem. Some of the player's attacks can destroy more than one enemy on the same tick. This makes the game register just one kill and really screws with the design.

    I attempted to tie the event to the animation of the following explosion instead: explosion on spawn- set animation speed to self.UDI so each explosion has slightly different animation speeds and reaches the target frame at different ticks. explosion on animation frame x- do the score event.

    That didn't work either. Anyone know how I can pull this off?

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • Have you proven that the same tick is the issue? It doesn't sound like it from what you're describing. Use 'enemy on destroyed'.

  • Have you proven that the same tick is the issue? It doesn't sound like it from what you're describing. Use 'enemy on destroyed'.

    The setup I use is that on enemy of x color destroyed, another sprite representing the count spawns the next one and is destroyed. Like, at 0 lights on, enemy is destroyed, the 0 lights sprite spawns the one light sprite and gets destroyed. When the 4 light sprite spawns, the combo count goes up, the score increases accordingly and the lights go back to 0. It works just fine but when more than one enemy is destroyed at the same time, only one light changes. As if a single enemy was destroyed.

    To check it up, I created a global variable that increases by one when an enemy is destroyed. And while it does increase by the correct number of enemies destroyed, it is instant. Like, destroying 8 enemies at the same time makes the count go from 0 to 8 right away instead of counting from 1 to 8 fast.

    I wonder if it could work by using this number for the events instead. Like, when this variable equals 1, make the one light sprite visible. If it's equal or above 4, spawn the 4 lights sprite, do the score thing, then subtract 4 from it. This way if say, 8 enemies are destroyed at once, the count of 8 would spawn the 4 lights and score, subtract 4 from itself and become 4, do the 4 lights and score increase again and go to zero. 9 enemies destroyed at once would do all that and set the count to 1 at the end.

  • Are you increasing this variable number in the same condition that checks the colision?

    I would suggest trying to increase it using the condition:

    Sprite -> On Destroyed

  • Are you increasing this variable number in the same condition that checks the colision?

    I would suggest trying to increase it using the condition:

    Sprite -> On Destroyed

    Everything was already -> on destroyed. I'll see if the new setup works later.

  • > Have you proven that the same tick is the issue? It doesn't sound like it from what you're describing. Use 'enemy on destroyed'.

    The setup I use is that on enemy of x color destroyed, another sprite representing the count spawns the next one and is destroyed. Like, at 0 lights on, enemy is destroyed, the 0 lights sprite spawns the one light sprite and gets destroyed. When the 4 light sprite spawns, the combo count goes up, the score increases accordingly and the lights go back to 0. It works just fine but when more than one enemy is destroyed at the same time, only one light changes. As if a single enemy was destroyed.

    To check it up, I created a global variable that increases by one when an enemy is destroyed. And while it does increase by the correct number of enemies destroyed, it is instant. Like, destroying 8 enemies at the same time makes the count go from 0 to 8 right away instead of counting from 1 to 8 fast.

    I wonder if it could work by using this number for the events instead. Like, when this variable equals 1, make the one light sprite visible. If it's equal or above 4, spawn the 4 lights sprite, do the score thing, then subtract 4 from it. This way if say, 8 enemies are destroyed at once, the count of 8 would spawn the 4 lights and score, subtract 4 from itself and become 4, do the 4 lights and score increase again and go to zero. 9 enemies destroyed at once would do all that and set the count to 1 at the end.

    Better if you share the events and tell us what you want. Of course if you use on destroyed then the variable will increase as fast as the enemies are destroyed, if that's a problem then show us why.

  • > > Have you proven that the same tick is the issue? It doesn't sound like it from what you're describing. Use 'enemy on destroyed'.

    >

    > The setup I use is that on enemy of x color destroyed, another sprite representing the count spawns the next one and is destroyed. Like, at 0 lights on, enemy is destroyed, the 0 lights sprite spawns the one light sprite and gets destroyed. When the 4 light sprite spawns, the combo count goes up, the score increases accordingly and the lights go back to 0. It works just fine but when more than one enemy is destroyed at the same time, only one light changes. As if a single enemy was destroyed.

    >

    > To check it up, I created a global variable that increases by one when an enemy is destroyed. And while it does increase by the correct number of enemies destroyed, it is instant. Like, destroying 8 enemies at the same time makes the count go from 0 to 8 right away instead of counting from 1 to 8 fast.

    >

    > I wonder if it could work by using this number for the events instead. Like, when this variable equals 1, make the one light sprite visible. If it's equal or above 4, spawn the 4 lights sprite, do the score thing, then subtract 4 from it. This way if say, 8 enemies are destroyed at once, the count of 8 would spawn the 4 lights and score, subtract 4 from itself and become 4, do the 4 lights and score increase again and go to zero. 9 enemies destroyed at once would do all that and set the count to 1 at the end.

    Better if you share the events and tell us what you want. Of course if you use on destroyed then the variable will increase as fast as the enemies are destroyed, if that's a problem then show us why.

    I just tried the new setup and it works. I have a global variable for each color of enemy. On destroyed enemy, the apropriate variable increases by 1. when it reaches 4 or more it increases the score by 200 x the combo counter (starts at 1), then doubles the combo counter (up to 4096) and subtracts 4 from itself. If an x colored enemy dies while one of the other counters is above 0, it resets the combo counter to 1 and the other color counter to 0. So if the player maintains a streak, every 4th enemy adds a lot more to the score.

    Lastly, if a counter is 1,2 or 3, the correct sprite displaying the number of lights will be made visible.

Jump to:
Active Users
There are 1 visitors browsing this topic (0 users and 1 guests)