Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 当两个对象彼此靠近时,为什么值向量3.距离返回值变大_Unity3d - Fatal编程技术网

Unity3d 当两个对象彼此靠近时,为什么值向量3.距离返回值变大

Unity3d 当两个对象彼此靠近时,为什么值向量3.距离返回值变大,unity3d,Unity3d,正如标题所说,我使用向量3.Distance来获得两个物体的距离,类似于敌方追击玩家, 我发现即使敌人“抓住”了玩家,两个对象也很接近,我的意思是它们都在相同的位置,相互重叠,但是这个api返回的值不是我所想的,值在0附近保持了一段时间,然后开始变得越来越大。 我不知道是否有理由解释,这很奇怪 我使用NavMeshAgent将“player.transform.position”设置为目标 另一幅图像: 您可以尝试的是: 在下面的两个公共变量中指定两个您想要的对象之间的距离 公共游戏对象Ob

正如标题所说,我使用向量3.Distance来获得两个物体的距离,类似于敌方追击玩家, 我发现即使敌人“抓住”了玩家,两个对象也很接近,我的意思是它们都在相同的位置,相互重叠,但是这个api返回的值不是我所想的,值在0附近保持了一段时间,然后开始变得越来越大。 我不知道是否有理由解释,这很奇怪

我使用NavMeshAgent将“player.transform.position”设置为目标

另一幅图像:


您可以尝试的是:

在下面的两个公共变量中指定两个您想要的对象之间的距离

公共游戏对象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);