如何检测在某个高度移动的游戏对象何时进入另一个游戏对象区域?

时间:2017-06-28 11:24:32

标签: c# unity3d unity5

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

喜欢

void OnTriggerEnter(Collider other)
    {
       if (other.gameObject.name == "Base")
      {

      } 
    }

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

我也尝试过使用Raycast命中。 在脚本的顶部我添加了:

Collider col;

然后在更新

    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    RaycastHit hit;
    if (col.Raycast(ray, out hit, 100.0F))
    {
        Debug.Log("Hit !");
    }

但转变再次在空中。 这个想法是在变换开始进入基地区域后做一些事情。

1 个答案:

答案 0 :(得分:4)

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

  • 制作基础的儿童游戏对象,只有Box Collider个组件(isTrigger设置为true
  • 在y轴上延伸此游戏对象的对撞机(将其视为支柱),如下所示: enter image description here

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

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

你很高兴。