【发布时间】:2014-11-11 13:13:23
【问题描述】:
我有一个游戏,其中实际上有两个桨,我已经对其进行了设置,以便玩家或 AI 可以控制任一桨。但是,我试图弄清楚如何让我的 AI 真正平稳地追球并接住它,而不是简单地用基本的“球的方向”= AI 移动的相反方向来强制它。
为了做到这一点,我正在尝试编写一些代码,让 AI 能够预测它会降落的位置、球何时在球场上或将在球场上。事情进展不顺利。这是我想要实现的图表:
所以,我一直在研究 Unity3D 并想出了这个:
Vector3 BallMinder = BallPosition.gameObject.rigidbody.velocity;
float BallX = BallMinder.x;
float BallY = BallMinder.y * Time.deltaTime;
float GroundHitPointX = (BallY + BallX);
Vector3 BallImpactPoint = new Vector3 (GroundHitPointX, 0, 0);
Debug.Log (BallImpactPoint);
Debug.DrawRay (BallImpactPoint, Vector3.up, Color.green);
但是,我觉得我把它过分简化了或者忘记了一些东西。我的计算很差,而且光线没有出现在它应该出现的地方,如果它出现的话。我做错了什么?
【问题讨论】:
-
我认为你可以很简单地做到这一点。你拿球的 X 位置并使计算机桨以他的最大速度移动到那个位置。对于计算机桨应在球触地的位置等待的解决方案,您需要计算下拉点(就像您所做的那样),但显然它的计算错误嘿:)
-
这就是我以前做的事情,但它从来没有让人觉得很人性化——我希望 AI 至少表现得像另一个球员一样,并尝试接球而不是朝它移动并获得 50%时间。
标签: c# unity3d artificial-intelligence physics