private void Cast() { Quaternion x = Quaternion.AngleAxis(angle.x, new Vector3(1, 0, 0)); Quaternion y = Quaternion.AngleAxis(angle.y, new Vector3(0, 1, 0)); Quaternion z = Quaternion.AngleAxis(angle.z, new Vector3(0, 0, 1)); Vector3 direction = x * y * z * transform.forward * maxDistance; Debug.DrawRay(transform.position, direction, Color.red); Ray ray = new Ray(transform.position, direction); if (Physics.Raycast(ray, out RaycastHit hit, maxDistance: maxDistance)) { if (currentHighlightable != null) { currentHighlightable.OnHighlightStop(); } if (hit.collider.CompareTag("Interactable")) { currentHighlightable = hit.collider.gameObject.GetComponent <Highlightable>(); currentInteractable = hit.collider.gameObject.GetComponent <Interactable>(); currentHighlightable?.OnHighlightStart(); } else { currentHighlightable = null; currentInteractable = null; } }
// Update is called once per frame void Update() { RaycastHit hit; Ray ray = camera.ScreenPointToRay(new Vector3(Screen.width / 2f, Screen.height / 2f, 0)); if (Physics.Raycast(ray, out hit)) { Highlightable target = hit.transform.GetComponent <Highlightable>(); if (target != highlighted) { if (highlighted != null) { highlighted.Deselect(); if (highlighted.transform.parent == KeyBook.transform) { controller.lookingAtBook = false; } } } if (hit.transform.parent == KeyBook.transform) { controller.lookingAtBook = true; } if (target != null) { target.Highlight(); highlighted = target; } // Do something with the object that was hit by the raycast. } else if (highlighted != null) { highlighted.Deselect(); } }
private void OnTriggerEnter(Collider other) { //Debug.Log(other.gameObject.name + " entered me"); Highlightable hi = other.gameObject.GetComponent <Highlightable>(); switch (OnEnter) { case DoWhatOn.AddListener: if (!HighlightController.Contains(hi)) { OnPad += hi.ToggleHighlightMaterial; //Debug.Log("Adding callback"); } break; case DoWhatOn.RemoveListener: OnPad -= hi.ToggleHighlightMaterial; break; case DoWhatOn.DoNothing: break; default: break; } }
private void OnCollisionEnter(Collision collision) { if (collision.gameObject == heldObj && holdingObj) { return; } if (selectableLayer == (selectableLayer.value | 1 << collision.gameObject.layer)) { if (numberOfCollisionOld == 0) { return; } //highlights only the most recent object currentHighlightedObj = collision.gameObject; if (highlight != null) { highlightOld = highlight; highlightOld.SetAlternateSprite(false); } highlight = currentHighlightedObj.GetComponent <Highlightable>(); if (highlight.highlightable) { highlight.SetAlternateSprite(true); } else { highlight = null; currentHighlightedObj = null; } } }
void HighlightCollider(GameObject colliderGO, bool highlight) { Highlightable highlightScript = GetComponent <Highlightable>(); if (highlightScript == null) { highlightScript = colliderGO.AddComponent <Highlightable>(); } highlightScript.SetAllChildrenHighlightable(highlight); }
void Awake() { Highlightable highlighter = gameObject.GetComponent <Highlightable>(); // get reference to the sound manager DogController[] foundDogControllers = FindObjectsOfType <DogController>(); if (foundDogControllers.Length > 0) { SoundManagerInstance = foundDogControllers[0].GetComponentInChildren <SoundManager>(); } }
// Update is called once per frame void LateUpdate() { Collider[] hitColliders = Physics.OverlapSphere(pickUpOffset.x * transform.right + pickUpOffset.y * transform.up + pickUpOffset.z * transform.forward + transform.position, pickUpRadius, pickUpLayer); foreach (Collider collider in hitColliders) { Highlightable highlightableScript = collider.GetComponentInParent <Highlightable>(); if (highlightableScript != null) { if (highlightableScript.highlighted == false) { highlightableScript.Highlight(highLightColour); return; } } } }
public void SetAllChildrenHighlightable(bool highlight) { mChildrenRenderers = gameObject.GetComponentsInChildren <Renderer>(); if (mChildrenRenderers != null) { foreach (Renderer render in mChildrenRenderers) { Highlightable highlightScript = GetComponent <Highlightable>(); if (highlightScript == null) { highlightScript = render.gameObject.AddComponent <Highlightable>(); } highlightScript.SetHighlight(highlight); } } }
public static bool Contains(Highlightable obj) { if (OnPad == null) { return(false); } Delegate[] invocList = OnPad.GetInvocationList(); foreach (Delegate d in invocList) { #pragma warning disable 252 if (d.Target == obj) // yes, compare references #pragma warning restore 252 { return(true); } } return(false); }
void Update() { RaycastHit hit; if (Physics.Raycast(gunBarrel.transform.position, gunBarrel.transform.forward, out hit, 30.0f)) { target_object = hit.collider.gameObject; while (target_object.transform.parent != null && target_object.transform.parent.gameObject.tag != "Terrain") { target_object = target_object.transform.parent.gameObject; } target_script = target_object.GetComponent <Highlightable>(); if (target_script != null) { setHighlighted(true); if (InputManager.GetAction("Use")) { actuate(); } else { actuate(); } } else { // if we lose focus, reset the timer reset(); } } else { // if we lose focus, reset the timer reset(); } if (InputManager.GetAction("ToggleLaser")) { ToggleLaser(); } }
public void OnPickStateChanged(PickState prevState, PickState currentState, Picker picker, GameObject target) { switch (currentState) { case PickState.None: if (target && target.tag.Equals(TAG_PART)) { Part part = target.GetComponent <Part>(); part.Highlighted = Part.HighlightDegree.None; part.DisconnectFromRigidbody(); if (picker != null) { picker.Reset(); } } else if (target && target.tag.Equals(TAG_BUTTON)) { Highlightable button = target.GetComponentInChildren <Highlightable>(); button.Highlighted = Highlightable.HighlightDegree.None; } break; case PickState.Hovering: if (target && target.tag.Equals(TAG_PART)) { Part part = target.GetComponent <Part>(); part.Highlighted = Part.HighlightDegree.Half; part.DisconnectFromRigidbody(); if (prevState == PickState.Picking) { part.Highlighted = Part.HighlightDegree.None; if (picker != null) { picker.Reset(); } } } else if (target && target.tag.Equals(TAG_BUTTON)) { Highlightable button = target.GetComponentInChildren <Highlightable>(); button.Highlighted = Highlightable.HighlightDegree.Half; } if (currentShelf.CurrentPreset().Type == Preset.PresetType.NewPresetPlaceHolder) { audio.PlayOneShot(audioHover); } break; case PickState.Picking: if (target && target.tag.Equals(TAG_PART) && picker != null) { Part part = target.GetComponent <Part>(); part.Highlighted = Part.HighlightDegree.Full; part.ConnectToRigidbody(picker.MiddlePointContainer.rigidbody, Vector3.zero); pickedAnyPart = true; if (currentShelf.CurrentPreset().Type == Preset.PresetType.NewPresetPlaceHolder) { audio.PlayOneShot(audioPickPart); } } else if (target && target.tag.Equals(TAG_BUTTON)) { Highlightable highlightable = target.GetComponentInChildren <Highlightable>(); highlightable.Highlighted = Highlightable.HighlightDegree.Full; Button3D button = target.transform.parent.GetComponent <Button3D>(); if (button == editButton) { StartCoroutine(OnEditButtonPicked()); } else if (button == saveEditingButton) { StartCoroutine(OnSaveButtonPicked()); } else if (button == cancelEditingButton) { StartCoroutine(OnCancelButtonPicked()); } else if (button == doneEditingButton) { OnDoneButtonPicked(); } audio.PlayOneShot(audioPickButton); } break; } }
private void OnCollisionStay(Collision collision) { if (collision.gameObject == heldObj && holdingObj) { return; } if (selectableLayer == (selectableLayer.value | 1 << collision.gameObject.layer)) { ++numberOfCollisions; if (numberOfCollisions > 1) //checks the y pos, of the objects. then it only highlights the lowest one. { secondCollYPos = collision.gameObject.transform.position.y; if (highlightOld != null) { highlightOld.SetAlternateSprite(false); } if (highlight != null) { highlightOld = highlight; highlightOld.SetAlternateSprite(false); } if (secondCollYPos < firstCollYPos) { currentHighlightedObj = collision.gameObject; highlight = currentHighlightedObj.GetComponent <Highlightable>(); if (highlight.highlightable) { highlight.SetAlternateSprite(true); } else { highlight = null; currentHighlightedObj = null; } } else { currentHighlightedObj = firstCollision; highlight = currentHighlightedObj.GetComponent <Highlightable>(); if (highlight.highlightable) { highlight.SetAlternateSprite(true); } else { highlight = null; currentHighlightedObj = null; } } return; } else { firstCollYPos = collision.gameObject.transform.position.y; firstCollision = collision.gameObject; if (numberOfCollisionOld > 1 || numberOfCollisionOld == 0) { return; } } if (collision.gameObject != currentHighlightedObj) { //highlights only the most recent object currentHighlightedObj = collision.gameObject; if (highlight != null) { highlightOld = highlight; highlightOld.SetAlternateSprite(false); } highlight = currentHighlightedObj.GetComponent <Highlightable>(); if (highlight.highlightable) { highlight.SetAlternateSprite(true); } else { highlight = null; currentHighlightedObj = null; } } } }
void HandledInteract() { if (((controller.playerOne && Input.GetAxisRaw("InteractOne") == 1) || (!controller.playerOne && Input.GetAxisRaw("InteractTwo") == 1)) && !performedInteraction) { if (currentHighlightedObj != null) { InteractionType type = highlight.interactionType; switch (type) { case InteractionType.PickUp: if (heldObj == null) { performedInteraction = true; holdingObj = true; heldObj = currentHighlightedObj; heldObjHighlight = highlight; heldObj.transform.parent = transform; heldObj.transform.localPosition = handsTransform.localPosition; currentHighlightedObj = null; highlight.SetAlternateSprite(false); } break; case InteractionType.Activate: //actions possible if you are holding or not holding a part if (heldObj != null) //actions only possible while holding parts { performedInteraction = true; //checks to see if you can use a part to repair RecieveParts partsReciver; currentHighlightedObj.TryGetComponent(out partsReciver); if (partsReciver != null) { if (partsReciver.RecivePart(heldObjHighlight.partID)) { performedInteraction = true; holdingObj = false; controller.controller.center = new Vector3(0, 0, 0); Destroy(heldObj); if (highlight != null) { highlight.SetAlternateSprite(false); currentHighlightedObj = null; highlight = null; } heldObjHighlight = null; heldObj = null; return; } } //checks to see if you can activate a light breaker ChangeLight changeLight; currentHighlightedObj.TryGetComponent(out changeLight); if (changeLight) { performedInteraction = true; changeLight.SwitchLights(transform.position); return; } //checks to see if you can pass a part PassPart partsPasser; currentHighlightedObj.TryGetComponent(out partsPasser); if (partsPasser != null) { if (partsPasser.TransferPart(heldObj, transform.position)) { performedInteraction = true; holdingObj = false; controller.controller.center = new Vector3(0, 0, 0); heldObj.transform.parent = null; heldObjHighlight = null; heldObj = null; return; } } } else //actions only possible while not holding parts { //checks to see if you can activate a light breaker ChangeLight changeLight; currentHighlightedObj.TryGetComponent(out changeLight); if (changeLight) { performedInteraction = true; changeLight.SwitchLights(transform.position); } } break; default: Debug.Log("error for " + currentHighlightedObj.name); break; } } if (currentHighlightedObj == null && !performedInteraction)//put down an object { if (heldObj != null) { performedInteraction = true; holdingObj = false; controller.controller.center = new Vector3(0, 0, 0); heldObj.transform.parent = null; heldObjHighlight = null; heldObj = null; } } } if (((controller.playerOne && Input.GetAxisRaw("InteractOne") == 0) || (!controller.playerOne && Input.GetAxis("InteractTwo") == 0)) && performedInteraction) { performedInteraction = false; } }