此外,攻击有效,但主要问题是我应该在一个方向上进行武器攻击。
嗨,我正在制作一个回合制动作游戏,玩家可以使用某种武器移动或攻击敌人。敌人只是使用一个简单的攻击逻辑来检查玩家是否在附近,然后让他受到伤害。Nearby() 使用 Math.Abs 来查找绝对距离。
这是用于 Enemy 攻击的旧 Nearby() 方法:
public bool Nearby(Point locationToCheck, int distance)
{
if (Math.Abs(location.X - locationToCheck.X) < distance &&
(Math.Abs(location.Y - locationToCheck.Y) < distance))
{
return true;
}
else
{
return false;
}
}
因此,包含上述方法的 Enemy 类将 Player 位置传递给该方法,并将其自身的攻击范围作为一个 int,然后将其与自己的位置进行检查,如果返回 true,则对玩家造成伤害。
但是,玩家攻击更加复杂。他的武器必须首先检查给定方向上的 Nearby() 距离。所以我需要编写一个新的重载 Nearby() 方法来处理玩家的武器攻击逻辑。我不知道该怎么做。不知何故,玩家的 Weapon Attack 方法应该将参数传递给以下 DamageEnemy() 方法:
protected bool DamageEnemy(Direction direction, int radius, int damage, Random random)
{
Point target = game.PlayerLocation;
for (int distance = 0; distance < radius; distance++) {
foreach (Enemy enemy in game.Enemies) {
if (Nearby(enemy.Location, target, distance)) {
enemy.Hit(damage, random);
return true;
}
}
target = Move(direction, target, game.Boundaries);
}
return false;
}
这个 DamageEnemy 方法依赖于两个新的重载方法,即前面提到的 Move() 方法和重载的 Nearby() 方法。我这样做是作为 Oreilly Headfirst C#, p. 中的教程。顺便说一句,480。
*原来继承的Move()方法很简单;它只是根据来自 Direction Enum 的 4 个方向之一的输入更新继承它的对象的位置字段。
我想自己做,但真的不知道攻击逻辑应该如何工作!谁能给我一些提示以指出正确的方向?我不知道他们希望我为什么创建新的 Move() 重载方法。玩家应该跳到他攻击的地方吗?或者它还有其他功能吗?谢谢!