When checking distance the distance is return with some E like : 1.922192E-06

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MoveNavi : MonoBehaviour
{
    public IKControl ikControl;
    public GameObject navi;
    public GameObject navi1;
    public GameObject naviParent;
    public bool childChangedNaviIsHandChild = false;

    private bool activateHelmet = false;

    private void Start()
    {
        navi1 = naviParent.transform.Find("NAVI1").gameObject;
    }

    private void Update()
    {
        ChangeChild();
        MoveNaviToTargetAndBack();
    }

    public void ChangeChild()
    {
        var dist = Vector3.Distance(transform.position, navi1.transform.position);
        if (dist < 0.1f && childChangedNaviIsHandChild == false)
        {
            childChangedNaviIsHandChild = true;
            ikControl.startMovingNAVI = false;
            navi.transform.parent = naviParent.transform;

            if (ikControl.target != null)
                ikControl.target.distance = 0;
        }

        if (ikControl.startMovingNAVI)
        {
            transform.position = Vector3.MoveTowards(transform.position, navi1.transform.position, 0.5f * Time.deltaTime);
        }
    }

    public void MoveNaviToTargetAndBack()
    {
        if (ikControl.target != null && ikControl.target.distance != 0 && IsNaviInHandChangeInteractableMode() == true)
        {
            var dist = Vector3.Distance(navi.transform.position, ikControl.target.transform.position);
            if (dist < 0.1f)
            {
                ikControl.toTarget = false;
            }

            if (ikControl.toTarget == false)
            {
                InCaseHelmet();

                var dist1 = Vector3.Distance(navi.transform.position, navi1.transform.position);
                if (dist1 < 0.1f && ikControl.target.GetComponent<Interactable>() != null)
                {
                    ikControl.target.distance = 0;
                }        
                navi.transform.position = Vector3.MoveTowards(navi.transform.position, navi1.transform.position, 3f * Time.deltaTime);
            }

            if (ikControl.toTarget == true)
                navi.transform.position = Vector3.MoveTowards(navi.transform.position, ikControl.target.transform.position, 3f * Time.deltaTime);
        }
    }

    private void InCaseHelmet()
    {
        var dist1 = Vector3.Distance(navi.transform.position, navi1.transform.position);
        if (dist1 < 0.1f && activateHelmet == false && ikControl.target.name == "kid_from_space_helmet")
        {
            var helmetParent = GameObject.Find("Helmet Parent");
            GameObject Helmet = helmetParent.transform.Find("kid_from_space_helmet").gameObject;
            Helmet.SetActive(true);
            activateHelmet = true;
        }
    }

    public bool IsNaviInHandChangeInteractableMode()
    {
        bool inhand = false;

        if (navi.transform.IsChildOf(naviParent.transform) == true)
        {
            inhand = true;
        }

        return inhand;
    }
}

The returning error number of the distance is in this lines :

var dist1 = Vector3.Distance(navi.transform.position, navi1.transform.position);
                if (dist1 < 0.1f && ikControl.target.GetComponent<Interactable>() != null)
                {
                    ikControl.target.distance = 0;
                }

I used a breakpoint and navi and navi1 are never null and I see that navi is getting to navi1 but still it’s never get in pass in the distance check it’s all the time giving a distance number with E.

navi1 is empty gameobject and navi is child of navi1

Check out here how to compare floating point values

Here’s more explanation from another thread

Finally, learn what E is

From your example 1.922192E-06 is the same value as 0.000001922192

3 Likes

Right, I would suggest to look up scientific notation and more specifically the E notation. Any if you’re at it, maybe watch this computerphile video on floating point numbers.

edit: I just noticed you already put the wikipedia article in your earlier reply^^.

1 Like