HELP: hit detection - probably simple ??

Posted By: dracula

HELP: hit detection - probably simple ?? - 07/23/08 09:05

Can someone please show me how to test for hit detection so that I can terminate the while loop. At the moment, victim1 gets hit, dies but the is dragged across the ground due to the while loop continuing.
Thank you.


action victim1()
{

my.emask |= (ENABLE_IMPACT);
my.event = got_shot;

while(1)
{

c_move(my,vector(1*time_step,0,0),nullvector,0); // move ahead until obstacle is hit
wait(1);
}
}



function got_shot()
{
var anim_percentage = 0;
my.event = NULL; // the enemy is dead, so it should stop reacting to other bullets from now on
while (anim_percentage < 100) // this loop will run until the "death" animation percentage reaches 100%
{
ent_animate(my, "death", anim_percentage, NULL); // play the "death" animation only once
anim_percentage += 3 * time_step; // "3" controls the animation speed
wait (1);
}
set(my,PASSABLE); // allow the player to pass through the corpse now
}
Posted By: Steev

Re: HELP: hit detection - probably simple ?? - 07/23/08 11:39

I think, the while loop, for the walk-animation runs always (while(1)).

Create a flag for "alive" and set this onto false if the victim dies.

Code:
action victim1()
{
my.emask |= (ENABLE_IMPACT);
my.event = got_shot;
my.flag1 = true;
while(my.flag1)
{

c_move(my,vector(1*time_step,0,0),nullvector,0); // move ahead until obstacle is hit
wait(1);
}
}



function got_shot()
{
var anim_percentage = 0;
my.flag1 = false;
my.event = NULL; // the enemy is dead, so it should stop reacting to other bullets from now on
while (anim_percentage < 100) // this loop will run until the "death" animation percentage reaches 100%
{
ent_animate(my, "death", anim_percentage, NULL); // play the "death" animation only once
anim_percentage += 3 * time_step; // "3" controls the animation speed
wait (1);
}
set(my,PASSABLE); // allow the player to pass through the corpse now
}


Posted By: dracula

Re: HELP: hit detection - probably simple ?? - 07/23/08 11:55

Steev, you put me on the right track. If you look at my code, you will see I have used the Latest Lite C language changes. It's horrible to read, but it works !

Thanks Steev.


action victim1()
{

my.emask |= (ENABLE_IMPACT);
my.event = got_shot;
set(my,FLAG1);

while(is(my,FLAG1))
{

c_move(my,vector(1*time_step,0,0),nullvector,0); // move ahead until obstacle is hit
wait(1);
}
}


function got_shot()
{
var anim_percentage = 0;
reset(my,FLAG1);
my.event = NULL; // the enemy is dead, so it should stop reacting to other bullets from now on
while (anim_percentage < 100) // this loop will run until the "death" animation percentage reaches 100%
{
ent_animate(my, "death", anim_percentage, NULL); // play the "death" animation only once
anim_percentage += 3 * time_step; // "3" controls the animation speed
wait (1);
}
set(my,PASSABLE); // allow the player to pass through the corpse now
}
Posted By: Steev

Re: HELP: hit detection - probably simple ?? - 07/23/08 13:45

Sorry for my uggly code,

i am here at work and could not spent so much time for the forum...
© 2024 lite-C Forums