private void Update() { justGrabbed = false; invertSymbol.SetActive(false); grabTip.SetActive(false); releaseTip.SetActive(false); RaycastHit hitInfo; if (Physics.Raycast(new Ray(transform.position, transform.forward), out hitInfo, 10000, layer)) { invertable = hitInfo.transform.gameObject.GetComponent <Invertable>(); grabable = hitInfo.transform.gameObject.GetComponent <Grabable>(); if (invertable != null) { if (!playerInput.CoursorFree) { invertSymbol.SetActive(true); } if (Input.GetKeyDown(KeyCode.Mouse0) && !playerInput.CoursorFree) { InvertorSlot slot = InvertionManager.Instance.GetFreeInvertorSlot(); if (slot != null) { Invertor invertor = new Invertor(); slot.TakeSlot(invertor, invertor.Apply(invertable)); } } } if (grabable != null && currentGrabable == null) { grabTip.SetActive(true); if (Input.GetKeyDown(KeyCode.F) && !playerInput.CoursorFree) { grabable.Grab(grabTransform, 2); currentGrabable = grabable; justGrabbed = true; } } } if (currentGrabable != null) { releaseTip.SetActive(true); } if (!justGrabbed && Input.GetKeyDown(KeyCode.F) && currentGrabable != null) { currentGrabable.Release(); currentGrabable = null; } if (currentGrabable != null && currentGrabable.Target != grabTransform) { currentGrabable = null; } }
private void Update() { HandleMovement(); m_PointedItem?.Highlight(false); m_PointedItem = null; Ray ray = new Ray(m_CameraTransform.position, m_CameraTransform.forward); RaycastHit hit; if (Physics.Raycast(ray, out hit, m_GrabDistance, m_GrabableMask)) { m_PointedItem = hit.collider.GetComponentInParent <Grabable>(); if (m_PointedItem) { m_PointedItem.Highlight(true); } } if (Input.GetMouseButtonDown(0) && m_GrabbedItem) { var gun = m_GrabbedItem.GetComponent <Gun>(); if (gun) { gun.Fire(); } } if (Input.GetMouseButtonDown(0) && m_PointedItem) { m_GrabbedItem = m_PointedItem; m_GrabbedItem.Highlight(false); m_GrabbedItem.Grab(m_GrabHook); } if (Input.GetMouseButtonDown(1) && m_GrabbedItem) { m_GrabbedItem.Release(); m_GrabbedItem = null; } if (Input.GetKeyDown(KeyCode.E) && hit.collider) { //Debug.Log(hit.collider.gameObject.name); var button = hit.collider.GetComponentInParent <BigButton>(); if (button) { button.Push(); } } }