It's because your bullet is big enough to overlap more than one monster at a time, so it's possible to trigger "On collision" for more than one monster before it disappears off-screen.
Add a "For each monster" loop at the beginning of your bullet-collision event, that will take care of it.
But really... you're doing so many odd things in the game I think you should probably go through the Ghost Shooter tutorial first. You're moving your bullet manually, and a) you don't need to, because there is a Bullet Behavior, and b) you're not using TimeDelta to move it (or your monsters, for that matter), so it will run differently on different computers. Whenever you move something manually you should always use TimeDelta.
Also, if you switch to Bullet Behavior for your bullets, you can spawn them and destroy them instead of using just one bullet object and setting it's position off-screen when you don't need it.
Yes, my shot touches two monsters.
But I want to only one death.
In c++ I wrote...
for(int i=0 ; i<monstersAmount ; i++)
{
if(bullet.collision(monster[i]) && bullet.life == 1)
{
monster[i].destroy();
bullet.life = 0;
}
}[/code:1ed8d991]
...and a one monster that has been destroyed.
[b]How to destroy an object instead of two?[/b]
Screenplay:
[code:1ed8d991]1. shot hits two monsters
2. first monster dies
3. shot is destroyed
4. second monster did not die, because there is no longer a shot[/code:1ed8d991]