Version: 2019.2

QueryTriggerInteraction

enumeration

Switch to Manual

Description

Overrides the global Physics.queriesHitTriggers.

Overrides the global Physics.queriesHitTriggers to specify whether queries (raycasts, spherecasts, overlap tests, etc.) hit Triggers by default. Use Ignore for queries to ignore trigger Colliders.

//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; } } }

Variables

UseGlobalQueries use the global Physics.queriesHitTriggers setting.
IgnoreQueries never report Trigger hits.
CollideQueries always report Trigger hits.
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961