new void Update() { base.Update(); if (!XRDevice.isPresent) { // On left mouse click if (Input.GetMouseButtonDown(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out RaycastHit hit)) { switch (hit.transform.tag) { case "Fireflies": Fireflies firefliesHitted = hit.transform.GetComponent <Fireflies>(); firefliesHitted.Seperate(); break; case "Elevator": Elevator elevator = hit.transform.GetComponentInParent <Elevator>(); elevator.OpenDoors(); break; case "AttractBall": if (attractBall) { attractBall.moveWithMouse = true; } break; } } } else if (Input.GetMouseButtonUp(0) && attractBall) { attractBall.moveWithMouse = false; } // On moving mouse rotationX += mouseRotationSpeed * Input.GetAxis("Mouse X"); rotationY -= mouseRotationSpeed * Input.GetAxis("Mouse Y"); transform.eulerAngles = new Vector3(rotationY, rotationX, 0); // Activate fireflies from lamp if (Input.GetKey("s")) { firstFireflies.ActivateAfterInitialize(); } // Follow attract ball if (attractBall && Input.GetKey("f")) { attractBall.shouldFollow = true; } } }
private void Update() { if (XRDevice.isPresent) { if (grabPinchAction.GetStateDown(handType)) { // Set that fireflies should follow shouldFollow = true; // Make controller glowing if (!isGlowing) { Glow(true); } // Set start position of drag dragStartPosition = transform.position; } else if (grabPinchAction.GetLastStateUp(handType)) { // Set that fireflies should not follow shouldFollow = false; // Deactivate controller glowing if (isGlowing) { Glow(false); } // Reset values of seperation ResetDrag(); } // Logic for seperating if (dragStartPosition != null && firefliesHitted != null) { float dragDistance = Vector3.Distance(transform.position, (Vector3)dragStartPosition); var allowed = FirefliesHelper.Instance.RequestSeperating(GetInstanceID(), firefliesHitted.GetInstanceID()); if (dragDistance > minSeperationDragDistance && allowed) { firefliesHitted.Seperate(); } } } else if (moveWithMouse) { Vector3 temp = Input.mousePosition; temp.z = Input.mousePosition.z + 2; transform.position = Camera.main.ScreenToWorldPoint(temp); } else { shouldFollow = false; } }