/// <summary> /// Shoots out raycast-if item is interactable- interacts with the item. /// </summary> private void InteractWith() { RaycastHit targetHit; if (Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward, out targetHit, rayDistance)) { selectedItem = GetObject(Camera.main.transform.position, Camera.main.transform.forward, targetHit); var itemTag = selectedItem.tag.ToString(); if (itemTag.Contains("object")) { if (itemTag.Contains("openable")) { currentAction = InteractStates.isPulling; } else if (itemTag.Contains("effects")) { InvokeTurnOnInteraction(); } else // Normal object { Freeze(selectedItem); currentAction = InteractStates.isHolding; } } } }
/// <summary> /// Releases held object- changes player state to not interacting /// </summary> public void Drop() { if (selectedItem.GetComponent <Rigidbody>()) { Unfreeze(selectedItem); } currentAction = InteractStates.isNotInteracting; selectedItem = null; }
void Start() { currentAction = InteractStates.isNotInteracting; try { hover = GetComponent <Hover>(); } catch { Debug.Log("Cant find Hover Script"); } }
public void Freeze(string objName) { var goalObj = GameObject.Find(objName); selectedItem = goalObj; Vector3 freeze_position = Camera.main.transform.position + Camera.main.transform.forward * holdDistance; goalObj.transform.position = freeze_position; goalObj.transform.parent = Camera.main.transform; Rigidbody rigidbody = goalObj.GetComponent <Rigidbody>(); rigidbody.constraints = RigidbodyConstraints.FreezeAll; goalObj.layer = 13; currentAction = InteractStates.isHolding; }
private void AutoPull() { try { Open door = selectedItem.GetComponent <Open>(); if (door.hType == HingeType.slideOut) { if (door.isClosed) { //door.AutoSlideOut(2f); } else { currentAction = InteractStates.isNotInteracting; } } } catch (Exception ex) { Debug.Log(ex.ToString()); } }