所以,我正在做一个Bot算法游戏,我有2个玩家和7个球。
我设法计算每个球员与每个球之间的距离,但现在我需要我的球员将球移动到距球员最短距离的球坐标上。
玩家和球是 2类,其中 2个整数,x和y是它们的坐标。
我通过使用
Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1))
现在,我需要以某种方式获取最短距离的x和y坐标。我考虑过逆转公式以获得 x值和 y值,但是我不确定是否能为我带来理想的结果
您有任何想法或不同的方法想法吗?我只需要一些想法和解决方法,其余的工作就由我来做。
无法发布代码,因为许多其他方法,类等未存储在本地,因此我无法访问完整的源代码。如果您仍然认为您可以提供更好的代码帮助,请在此处将其上传。
答案 0 :(得分:0)
我假设您的项目有一些对象,这些对象代表球员和包含X-Y坐标的球,并且您想向向移动最近的球(而不是传送到该球)。
如果假设正确,那么您想要的是到最接近球的方向向量。每个球都应该知道其X-Y坐标,您不需要计算-还是我错过了要点?
即像这样的伪代码:
class Player { float x, y };
class Ball { float x, y };
// Determine nearest ball
function distance(Player, Ball) = ... // the code you already posted
Ball nearest = for each ball { calculate distance } and find lowest
// Calculate direction to nearest ball
Vector dir = normalize(nearest.xy - player.xy);
// Move player
Vector move = dir * speed;
player.xy += move;
nearest.xy - player.xy
计算到最近球的方向,normalize
将其转换为单位矢量。
围绕简单的矢量数学有很多教程。