2016-08-02 2 views
1

私のゲームにはプレイヤーx、y、z座標だけでなく、プレイヤーのカメラヨー(唯一のヨー、ロールまたはピッチなし)、および敵x、y、z座標のリストがあります。私は目標の支援を実装したいが、私はアルゴリズムを思いつくのに困っている。Aim Assistance-どのプレイヤーをどのように狙うことができますか?

これを行う方法がわかりません。最も近い敵のプレイヤーを見つけることは簡単ですが、プレーヤーが最も近い敵のプレーヤーより少し遠くに誰かを目指したいと思って、そのプレイヤーの近くに彼らの目標を非常に近づけている場合はどうなりますか?私は何とかヨー差で何かをしなければならないと思いますが、私は何をすべきか正確にはわからない擬似コードで私がこれまで持って何

、:私はyawDiffで何かをする必要があり

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); 
} 

を、私は思うが、確かに正確ではない。

答えて

2

だから、どのプレイヤーを目標にするためにどのメトリクス/ヒューリスティクスを採用するかを決める必要があります。

ゲームプラットフォームが2D(例:Space InvadersやThing-Thing)または擬似3D(DoomやWolfenstein 3Dなど)でない限り、あなたの目標の仰角も考慮する必要がありますあなたのビューの錐台の上または下のいくつかの目に見えないプレーヤーにジャンプする)。

ドットプロダクト:ビュー/目的方向とあなたから各敵プレイヤーに向かうベクトルとの間のドットプロダクトを計算します。これが1に近い場合は、プレイヤーの近くを目指しています。

撮影する2人のプレーヤーの間で決定するには、ドットプロダクトの指標の差の割合を計算できます。また、距離の差のパーセンテージを計算することもできます。これらの2つのパーセンテージの差を比較し、より大きなものについては、対応するメトリックが大きいプレーヤーを選択します。

我々はリアリズムを向上させるために行うことができます

より高度な手順は次のとおりです。精度/火力の

  • の距離減衰を - あなたはメトリックとしてこれを追加することを検討できるよう、これは現実の生活の中で非常に重要な考慮事項です。
  • 投射サイズ:あなたの近くにいるプレイヤーは明らかに大きなターゲットを作る。したがって、近いプレイヤーのドットプロダクトメトリックが小さくても、これを考慮に入れると、彼の比較する見かけのサイズのために、彼を目指す方がはるかに有利かもしれません。
関連する問題