Version: 2020.3
LanguageEnglish
  • C#

QueryTriggerInteraction.Ignore

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Description

Queries never report Trigger hits.

//Create two GameObjects (e.g. a Cube) and place them near each other. Attach this script to one of them.
//Click on the GameObject with the script. Attach the other GameObject to the “My Game Object” field in the Inspector.
//Make sure both have Collider components
//Choose your own “Max Distance” in the Inspector (e.g. 600).

//This script casts a ray that ignores Trigger Colliders. //Press space to switch the second GameObject between a Trigger and non-Trigger GameObject. When the Trigger is off, the ray detects a collision. When it is on, no collisions occur.

using UnityEngine;

public class Example : MonoBehaviour { //The maximum distance from your GameObject. Make sure to set this in the Inspector public float m_MaxDistance; public LayerMask m_Mask = -1;

//Assign a GameObject in the Inspector that you want to test collisions with public GameObject m_MyGameObject; //This is the Collider of the GameObject you assign in the Inspector Collider m_OtherGameObjectCollider;

void Start() { //Fetch the Collider from the GameObject you assign in the Inspector m_OtherGameObjectCollider = m_MyGameObject.GetComponent<Collider>(); }

void FixedUpdate() { //Set the direction as forward Vector3 direction = transform.TransformDirection(Vector3.forward);

//Use Physics to calculate the raycast //Uses your GameObject's original position, the direction (above), the max distance from your GameObject, and the LayerMask value to calculate raycast. //Also tells it to ignore trigger colliders using QueryTriggerInteraction if (Physics.Raycast(transform.position, direction, m_MaxDistance, m_Mask.value, QueryTriggerInteraction.Ignore)) print("There is something in front of the object!"); }

void Update() { //Press space to turn the other GameObject's trigger status on and off if (Input.GetKeyDown(KeyCode.Space)) { //Test if the trigger collisions are ignored by turning the GameObject's trigger collider on and off m_OtherGameObjectCollider.isTrigger = !m_OtherGameObjectCollider.isTrigger; } } }