public void Start()
    {
        trajectory.Clear();

        {
            SubMovement subMov = new SubMovement();
            subMov.p1 = subMov.p0 = transform.position;
            subMov.q1 = subMov.q0 = transform.rotation;
            subMov.s1 = subMov.s0 = new Vector2(1, 1);
            subMov.t0 = 0.0f;
            subMov.t1 = 0.0001f;

            trajectory.Enqueue(subMov);
        }

        {
            SubMovement subMov = new SubMovement();
            subMov.p1 = subMov.p0 = new Vector3();
            subMov.q1 = subMov.q0 = Quaternion.identity;
            subMov.s1 = subMov.s0 = new Vector2(1, 1);
            subMov.t0 = 0.0f;
            subMov.t1 = 0.0001f;

            subTrajectory.Enqueue(subMov);
        }
    }
Example #2
0
    // ----- ----- ----- ----- -----

    void Start()
    {
        openMovement    = new SubMovement();
        openMovement.t0 = 0.07f - 0.07f;
        openMovement.t1 = 0.07f;

        closeMovement    = new SubMovement();
        closeMovement.t0 = 0.20f - 0.13f;
        closeMovement.t1 = 0.13f;
    }
Example #3
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        // Check to make sure sub collided
        SubMovement go = collision.gameObject.GetComponent <SubMovement>();

        if (go != null)
        {
            // we have found a sub
            Debug.Log(triggerString);
            TriggerCrossed?.Invoke(triggerString);
        }
    }
Example #4
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        // Check to make sure sub collided
        SubMovement go = collision.gameObject.GetComponent <SubMovement>();

        if (go != null)
        {
            // we have found a sub
            Collect?.Invoke(pointValue);
            Destroy(gameObject);
        }
    }
    public SubMovement AddSubMovement(Pose pose, Vector2 spring, float completeTime, float duration, bool toSubTrajectory = false)
    {
        var subMov = new SubMovement();

        subMov.p0 = trajectory.Last().p1;
        subMov.q0 = trajectory.Last().q1;
        subMov.s0 = trajectory.Last().s1;

        subMov.p1 = pose.position;
        subMov.q1 = pose.rotation;
        subMov.s1 = spring;

        if (local)
        {
            subMov.p1 = gameObject.transform.TransformDirection(subMov.p1);
        }

        subMov.t0 += currTime + completeTime - duration;
        subMov.t1 += currTime + completeTime;

        if (noise)
        {
            float posdiff = (subMov.p1 - subMov.p0).magnitude;
            float rotdiff; Vector3 axis; (Quaternion.Inverse(subMov.q0) * subMov.q1).ToAngleAxis(out rotdiff, out axis);
            if (posdiff > 0.1f || rotdiff > 5.0f)
            {
                subMov.AddNoise();
            }
        }

        if (!toSubTrajectory)
        {
            trajectory.Enqueue(subMov);
        }
        else
        {
            subTrajectory.Enqueue(subMov);
        }
        return(subMov);
    }