【问题标题】:Aim Assistance- how can I pick which player to aim at?瞄准辅助 - 我如何选择瞄准哪个玩家?
【发布时间】:2016-08-02 08:51:27
【问题描述】:

我的游戏有玩家 x,y,z 坐标,以及我的玩家相机偏航(只有偏航,没有滚动或俯仰),以及敌人 x,y,z 坐标列表。我想实现瞄准辅助,但我无法提出算法。

我完全不知道该怎么做。找到最近的敌方玩家很容易,但是如果玩家想要瞄准比最近的敌方玩家稍远一点的人并且将他们的目标指向非常靠近该玩家怎么办?我必须以某种方式对偏航差异做一些事情,但我不确定该怎么做

到目前为止我所拥有的,在伪代码中:

EnemyList[Enemy1, Enemy2, Enemy3, Enemy4, Enemy5];
Player;

nearestEnemy = Player.FindNearestEnemy(EnemyList);
// in degrees, the "difference" in yaw between the players current aim and the aim they'd need to target the player
yawDiff = Player.YawDiff(nearestEnemy);

if Player.InRange(nearestEnemy) {
    Player.Aim(nearestEnemy);
}

我想我需要对 yawDiff 做点什么,但不确定具体是什么。

【问题讨论】:

    标签: game-physics


    【解决方案1】:

    因此,我们需要决定采用哪些指标/启发式方法来确定要瞄准的玩家。

    除非您的游戏平台是 2D(例如 Space Invaders 或 Thing-Thing)或伪 3D(例如 Doom 或 Wolfenstein 3D),否则您还需要考虑目标的高度(您真的不想跳到你视锥体上方或下方的一些隐形玩家)。

    您可以应用的另一个此类指标是点积:计算您的视图/瞄准方向与从您到每个敌方玩家的矢量之间的点积。如果这接近 1,那么您的目标是靠近玩家,如果不是,则不是。

    要决定两名球员投篮,我们可以计算他们的点积指标之间的百分比差异。我们还可以计算它们距离之间的百分比差异。比较这两个百分比差异,对于更大的那个,选择相应指标更大的玩家。

    我们可以做的更高级的程序来提高真实感包括:

    • 精度/火力的距离衰减 - 这是现实生活中非常重要的考虑因素,因此您可以考虑将其添加为指标。
    • 投影尺寸:离你更近的玩家显然会做出更大的目标。因此,即使距离较近的球员的点积指标更小,考虑到这一点,瞄准他可能会更有利,因为他的体型比较明显。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-20
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-16
      • 2010-11-12
      相关资源
      最近更新 更多