【问题标题】:Children collider not getting called儿童对撞机没有被调用
【发布时间】:2019-08-19 21:20:31
【问题描述】:

上下文

我在我的游戏中使用拾取系统。我有一个名为AbstractSightCollider 的组件,它有一个球体碰撞器和一些AbstractPickupableObject,它们是要被拾取的对象。

AbstractSightCollider 附在主角身上,但可以附在任何活着的实体或任何能够包含物品栏对象的东西上。

我设计的方式是,当AbstractSightCollider检测到一个物体时,它会触发一个名为PickupDetected的UnityEvent,当玩家离开拾取范围时,它会调用一个名为PickupLeave的UnityEvent

问题

我无法触发 OnCollisionEnterOnCollisionExit

一些代码

这是附加到AbstractSightCollider

public class AbstractObjectSight : MonoBehaviour
{
    public OnPickupableDetected pickupDetected;
    public OnPickupableLeave pickupLeave;

    private void OnCollisionEnter(Collision col) {
        GameObject gameObject = col.gameObject;

        AbstractPickupableObject abstractPickupableObject =
            gameObject.transform.GetComponent<AbstractPickupableObject>();

        if (abstractPickupableObject != null) {
            pickupDetected.Invoke(abstractPickupableObject);
        }
    }

    private void OnCollisionExit(Collision col) {
        GameObject gameObject = col.gameObject;

        AbstractPickupableObject abstractInventoryObject =
            gameObject.transform.GetComponent<AbstractPickupableObject>();

        if (abstractInventoryObject != null) {
            pickupLeave.Invoke(abstractInventoryObject);
        }
    }

    [System.Serializable]
    public class OnPickupableDetected : UnityEvent<AbstractPickupableObject> { }
    [System.Serializable]
    public class OnPickupableLeave : UnityEvent<AbstractPickupableObject> { }
}

以下是属性:

感谢您的宝贵时间

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    确保两个对象(带有脚本的对象和会触发触发器的对象)都有碰撞器和刚体,我发现如果没有这些对象,触发器和碰撞将不起作用。

    【讨论】:

    • 它不能有刚体,因为它是一个“AbstractObject”(视线场)。无论如何,您为我指出了一条好路,我不需要使用“碰撞”,而是使用“触发器”。谢谢
    【解决方案2】:

    我刚刚发现了问题。

    OnCollisionEnterOnCollisionExit 不是我需要听的事件,因为它们与刚体一起工作。我的 AbstractSight 是一个非实体抽象球体,允许实体抓取物品。

    相反,我使用了OnTriggerEnterOnTriggerExit,现在它就像一个魅力。

    【讨论】:

      猜你喜欢
      • 2016-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多