【发布时间】:2016-01-26 07:50:45
【问题描述】:
所以问题来了: 在我的游戏中,有一个功能,当玩家用他的剑攻击敌人时,敌人应该被缓慢地朝与玩家相反的方向击退。在我当前的代码中,当敌人受到攻击时,它会移动,但它是如此之快,以至于它似乎传送到指定的距离。这是我目前拥有的:
//Player sword collides with enemy
if (elapsed4.asSeconds() >= 0.05) //only 1 collision every .05 seconds
{
clock4.restart();
counter1 = 0;
for (iter30 = swordArray.begin(); iter30 != swordArray.end(); iter30++)
{
counter2 = 0;
for (iter4 = enemyArray.begin(); iter4 != enemyArray.end(); iter4++)
{
if(swordArray[counter1].rect.getGlobalBounds().intersects(enemyArray[counter2].rect.getGlobalBounds()))
{
soundSwordHit.play();
enemyArray[counter2].hp -= Player1.attackDamage;
if (enemyArray[counter2].hp <= 0)
{
enemyArray[counter2].alive = false;
}
//Move enemy upon damage
if (Player1.direction == 1)
{
enemyArray[counter2].rect.move(0, -50);
}
else if (Player1.direction == 2)
{
enemyArray[counter2].rect.move(0, 50);
}
else if (Player1.direction == 3)
{
enemyArray[counter2].rect.move(-50, 0);
}
else if (Player1.direction == 4)
{
enemyArray[counter2].rect.move(50, 0);
}
//enemy aggro
enemyArray[counter2].aggro = true;
}
counter2++;
}
counter1++;
}
}
我尝试在循环中使用计数器和计时器,但似乎无法让它按我的意愿运行。澄清一下,我希望敌人每次 t 移动 n 个像素来模拟平滑移动。如何才能做到这一点?提前致谢
【问题讨论】: