public void UpdateInteraction() { CreateRay(go => { if (go != null) { if (!_isOver) { _isOver = true; _interaction.OnMouseEnter(go, hit.point); } else { if (Input.GetMouseButtonDown(0)) { _interaction.OnMouseClick(go, hit.point); } else { _interaction.OnMouseOver(go, hit.point); } } } else if (_isOver) { _isOver = false; _interaction.OnMouseExit(); } }); if (Input.GetKeyDown(KeyCode.Escape)) { CancelInteraction(); } }
public void UpdateInteraction() { int layerMask = 1 << _interaction.GetLayer(); ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit, Mathf.Infinity, layerMask)) { if (!_isOver) { _isOver = true; _interaction.OnMouseEnter(hit.point); } else { if (Input.GetMouseButtonDown(0)) { _interaction.OnMouseClick(hit.point); } else { _interaction.OnMouseOver(hit.point); } } } else if (_isOver) { _isOver = false; _interaction.OnMouseExit(); } if (Input.GetKeyDown(KeyCode.Escape)) { CancelInteraction(); } }