Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检测一个游戏对象何时进入另一个游戏对象的区域?_C#_Unity3d - Fatal编程技术网

C# 如何检测一个游戏对象何时进入另一个游戏对象的区域?

C# 如何检测一个游戏对象何时进入另一个游戏对象的区域?,c#,unity3d,C#,Unity3d,我有一个脚本,可以让一个游戏物体移动到某个高度,比如200。 在地形上,我有另一个游戏对象。我希望当第一个移动的游戏对象开始进入另一个游戏对象区域时做些什么 像 但这不起作用,因为变换和“基”之间没有物理碰撞。变换高度为200 我还试着使用Raycast hit。 在脚本的顶部,我添加了: Collider col; 然后在更新中 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hi

我有一个脚本,可以让一个游戏物体移动到某个高度,比如200。 在地形上,我有另一个游戏对象。我希望当第一个移动的游戏对象开始进入另一个游戏对象区域时做些什么

但这不起作用,因为变换和“基”之间没有物理碰撞。变换高度为200

我还试着使用Raycast hit。 在脚本的顶部,我添加了:

Collider col;
然后在更新中

    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    RaycastHit hit;
    if (col.Raycast(ray, out hit, 100.0F))
    {
        Debug.Log("Hit !");
    }
但是,这一转变仍然悬而未决。
这个想法是在变换开始进入基本区域后做一些事情。

实现这一点的简单方法:

  • 制作基地的子游戏对象,仅使用
    框碰撞器
    组件(
    isTrigger
    设置为
    true
  • 在y轴上延伸此游戏对象的碰撞器(将其视为支柱),如下所示:

  • 使用以下代码将脚本附加到移动的游戏对象:

    using UnityEngine;
    
    public class CheckBaseCollider : MonoBehaviour {
        public GameObject baseCollider;
    
        private void OnTriggerEnter(Collider other) {
            if (other.gameObject == baseCollider) {
                Debug.Log("Entered");
            }
        }
    }
    

而且你很乐意去做。

实现这一目标的简单方法:

  • 制作基地的子游戏对象,仅使用
    框碰撞器
    组件(
    isTrigger
    设置为
    true
  • 在y轴上延伸此游戏对象的碰撞器(将其视为支柱),如下所示:

  • 使用以下代码将脚本附加到移动的游戏对象:

    using UnityEngine;
    
    public class CheckBaseCollider : MonoBehaviour {
        public GameObject baseCollider;
    
        private void OnTriggerEnter(Collider other) {
            if (other.gameObject == baseCollider) {
                Debug.Log("Entered");
            }
        }
    }
    
你可以走了