void OnEnable()
    {
        velocity = new NativeArray <float>(targets.Length, Allocator.Persistent);
        commands = new NativeArray <RaycastCommand>(targets.Length, Allocator.Persistent);
        results  = new NativeArray <RaycastHit>(targets.Length, Allocator.Persistent);
        for (int i = 0; i < targets.Length; i++)
        {
            velocity[i] = -1;
        }
        transformArray = new TransformAccessArray(targets);

        hitCheckJob = new IsHitGroundJob()
        {
            raycastResults = results,
            result         = new NativeArray <int>(1, Allocator.Persistent)
        };
    }
    void OnEnable()
    {
        velocity = new NativeArray <float>(targets.Length, Allocator.Persistent);
        commands = new NativeArray <RaycastCommand>(targets.Length, Allocator.Persistent);
        results  = new NativeArray <RaycastHit>(targets.Length, Allocator.Persistent);
        hitQueue = new NativeQueue <int>(Allocator.Persistent);

        transform.DetachChildren();

        for (int i = 0; i < targets.Length; i++)
        {
            velocity[i] = -1;
        }
        transformArray = new TransformAccessArray(targets);

        hitCheckJob = new IsHitGroundJob()
        {
            raycastResults = results,
            result         = hitQueue.ToConcurrent()
        };
    }