【问题标题】:Best way to tally objects in an area with collision? (Unity3D - C#)计算碰撞区域中物体的最佳方法? (Unity3D - C#)
【发布时间】:2014-08-10 01:53:17
【问题描述】:

统计以特定名称标记的对象的最佳方法是什么?我究竟做错了什么?我目前的目标是使用盒子对撞机来识别和统计房间中的特定对象。我们将不胜感激对解决方案或实现此目标的替代方法的任何响应。

我的尝试:

using UnityEngine;
using System.Collections;

public class roomColliders : MonoBehavior {

    public int numberOfTargets;

    void Start (){
        numberOfTargets = 0;
    }

    void OnCollisionEnter(Collision col){
        if(col.gameObject.tag == "Target"){
            numberOfTargets += 1;
        }
    }
}

此外,我尝试以多种方式使用 Box Colliders 和 Rigidbody 分配对象,但均未成功。我为三个对象分配了一个“目标”标签,但在我的检查器中,numberOfTargets 只计算一个对象。我得出的结论是,也许我需要使用诸如“foreach(col.contacts 中的ContactPoint 联系人)”之类的语句。我可能是错的,如果是,请告诉我。如果这接近答案。无论如何我可以分配'col.contacts.tag =“Target”'吗?如果我将它与“foreach”一起使用,则会出现错误。

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    如果您没有故意这样做,使用 OnCollisionEnter 是错误的。您必须改用 OnTriggerEnter。并且不要忘记使用 roomColliders 脚本打开附加到对象的盒子碰撞器上的 Is Trigger 属性。

    请注意,您的脚本实际上并未计算当前与触发器相交的对象数量。它计算感兴趣的对象开始与触发器相交的次数。但由于触发器可能会来回移动,因此同一个感兴趣的对象可能会与它相交不止一次。

    【讨论】:

      猜你喜欢
      • 2012-07-23
      • 1970-01-01
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      • 2019-01-22
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      相关资源
      最近更新 更多