Unity3d 当两个对象彼此靠近时,为什么值向量3.距离返回值变大
正如标题所说,我使用向量3.Distance来获得两个物体的距离,类似于敌方追击玩家, 我发现即使敌人“抓住”了玩家,两个对象也很接近,我的意思是它们都在相同的位置,相互重叠,但是这个api返回的值不是我所想的,值在0附近保持了一段时间,然后开始变得越来越大。 我不知道是否有理由解释,这很奇怪 我使用NavMeshAgent将“player.transform.position”设置为目标 另一幅图像:Unity3d 当两个对象彼此靠近时,为什么值向量3.距离返回值变大,unity3d,Unity3d,正如标题所说,我使用向量3.Distance来获得两个物体的距离,类似于敌方追击玩家, 我发现即使敌人“抓住”了玩家,两个对象也很接近,我的意思是它们都在相同的位置,相互重叠,但是这个api返回的值不是我所想的,值在0附近保持了一段时间,然后开始变得越来越大。 我不知道是否有理由解释,这很奇怪 我使用NavMeshAgent将“player.transform.position”设置为目标 另一幅图像: 您可以尝试的是: 在下面的两个公共变量中指定两个您想要的对象之间的距离 公共游戏对象Ob
您可以尝试的是: 在下面的两个公共变量中指定两个您想要的对象之间的距离
公共游戏对象Object1;
公共游戏对象对象2
私人浮动距离;
无效更新()
{
距离=向量3.距离(Object1.transform.position,Object2.transform.position);
调试日志(距离);
}
这似乎是最简单、最有效的方法。这并不是很多事情,你能发布这些值吗?很可能是因为你没有传递正确的值或使用不正确。。很难说没有看到你的代码我张贴的价值。似乎是敌人的位置。y在不断变化。如果你在做2d游戏,最好使用矢量2。距离。
public override void Reason(GameObject player, GameObject npc)
{
NPCControl npcControl = npc.GetComponent<NPCControl>();
float distance = Vector3.Distance(npc.transform.position, player.transform.position);
Vector3 Ppos = player.transform.position;
Debug.Log("P(" + Ppos.x + ", " + Ppos.y + ", " + Ppos.z + ")");
Vector3 Epos = npc.transform.position;
Debug.LogWarning("E(" + Epos.x + ", " + Epos.y + ", " + Epos.z + ")");
float Dst = Vector3.Distance(Ppos, Epos);
Debug.LogError("P-E(" + Dst + ")");
}
Vector3 from = new Vector3(npc.transform.position.x, 0f, npc.transform.position.z);
Vector3 to = new Vector3(player.transform.position.x, 0f, player.transform.position.z);
float distance = Vector3.Distance(from, to);