// Update is called once per frame
 void Update()
 {
     if (circle && point)
     {
         Vector3 farPoint = TelescopeUtils.FarthestPointOnCircle(circle.Center,
                                                                 circle.Normal, circle.radius, point.position);
         transform.position = farPoint;
     }
 }
        // Update is called once per frame
        void Update()
        {
            Vector3 center = TelescopeUtils.Circumcenter(object1.position, object2.position, object3.position);

            transform.position = center;
        }
Пример #3
0
        // Update is called once per frame
        void Update()
        {
            craneTarget.position = Vector3.Lerp(calibrationPos.position,
                                                currentTarget.position + targetOffset, interp);

            switch (currentMode)
            {
            case CraneMode.Extending:
                if (delay < 1)
                {
                    delay += Time.deltaTime;
                }
                else
                {
                    interp = Mathf.Clamp01(interp + Time.deltaTime);
                }
                if (interp >= 1)
                {
                    currentMode = CraneMode.Holding;
                }
                break;

            case CraneMode.Retracting:
                interp = Mathf.Clamp01(interp - Time.deltaTime);
                if (interp <= 0)
                {
                    currentMode = CraneMode.Holding;
                }
                break;

            case CraneMode.Holding:
            default:
                break;
            }

            Vector3 clawUp      = claw.transform.up;
            Vector3 clawForward = claw.transform.forward;

            Vector3 worldUpImage = Vector3.up - Vector3.Dot(Vector3.up, clawForward) * clawForward;

            float angle = TelescopeUtils.AngleBetween(clawUp, worldUpImage.normalized, claw.transform.forward);

            claw.transform.rotation = Quaternion.AngleAxis(Mathf.Min(angle, 90f * Time.deltaTime),
                                                           claw.transform.forward) * claw.transform.rotation;

            if (Input.GetKeyDown("=") && targetIndex < targets.Count && currentMode == CraneMode.Holding)
            {
                Debug.Log("extending");
                FetchTarget(targets[targetIndex]);
                currentTargetObject = targetObjects[targetIndex];
                targetIndex++;
            }

            if (Input.GetKeyDown("-") && currentMode == CraneMode.Holding)
            {
                Debug.Log("retracting");
                RetrieveTarget();
            }

            if (Input.GetKeyDown("0") && currentMode == CraneMode.Holding)
            {
                Debug.Log("Moving to bin");
                DepositTarget();
            }

            if (Input.GetKeyDown("1"))
            {
                bool nowOpen = claw.ToggleClose();
                if (!nowOpen)
                {
                    currentTargetObject.parent = claw.transform;
                }
                else
                {
                    currentTargetObject.parent = null;
                    currentTargetObject.GetComponent <Rigidbody>().isKinematic = false;
                }
            }
        }