我有一个游戏,无论何时你射击,它都会激活子弹的计时器。在计时器(将是下面的代码的位)中,它检测子弹的界限是否与敌人的界限相交。如果是这样,让敌人变红一秒,然后将他改回来。 以下代码是我在计时器底部的代码:
if (Bullet.Bounds.IntersectsWith(Enemy.Bounds))
{
if (isProne)
{
Enemy.BackgroundImage = TheEnemyHurt;
Bullet.Location = new Point(421, 236);
Bullet.Visible = false;
shooting = false;
Enemy.BackgroundImage = TheEnemy;
bulletTimer.Stop();
}
else if (!isProne)
{
Enemy.BackgroundImage = TheEnemyHurt;
Bullet.Location = new Point(515, 143);
Bullet.Visible = false;
shooting = false;
Enemy.BackgroundImage = TheEnemy;
bulletTimer.Stop();
}
}
但它只是让它成为常规的敌人形象(TheEnemy) TheEnemy和TheEnemyHurt都是代码顶部的位图:
Bitmap TheEnemy = new Bitmap(Resources.Enemy_Bigger_);
Bitmap TheEnemyHurt = new Bitmap(Resources.EnemyHurt_Bigger_);
我只是不知道为什么它会像常规图像一样停留,并且不会在一秒钟内转向受伤的图像?谢谢!
答案 0 :(得分:1)
我相信您的问题是您正在更改面板BG 但会立即将其更改。你在做:
Enemy.BackgroundImage = TheEnemyHurt;
Bullet.Location = new Point(421, 236);
Bullet.Visible = false;
shooting = false;
Enemy.BackgroundImage = TheEnemy;
因此,您正在更改背景,但可能会在屏幕刷新之前将其更改回来。您可以尝试使用另一个这样的计时器(伪代码):
bulletTimer:
Enemy.BackgroundImage = TheEnemyHurt;
Bullet.Location = new Point(421, 236);
Bullet.Visible = false;
shooting = false;
bulletTimer.Stop();
hurttimer.Start();
hurttimer:
Enemy.BackgroundImage = TheEnemy;
hurttimer.Stop();
根据你设置hurttimer
的间隔时间,这是敌人应该受伤多长时间。 HTH