gpt4 book ai didi

c# - Collider.isTouching 用于 3D 碰撞器

转载 作者:行者123 更新时间:2023-12-02 17:02:23 26 4
gpt4 key购买 nike

if (colliderBox.isTouching (col) && col.CompareTag("barrier")) {
score++;
this.GetComponent<Renderer> ().material.color = col.GetComponent<Renderer> ().material.color;
}

if (spriteBox.IsTouching(col) && col.CompareTag("barrier") ) {
Debug.Log (col);
Debug.Log (colliderBox);
SceneManager.LoadScene (mainMenu);
}

目前在我的代码中,我正在使用 onTriggerEnter 来检测与名为“barrier”的对象的碰撞,但我不得不用 3D 对象替换我的 2d spriteBox 和 2d colliderBox,现在 isTouching 不是3D 碰撞器。我找不到简单的替代品。我可以用什么代替它们?

最佳答案

没有用于 3D 碰撞的 isTouching 函数的等效版本,但您可以推出自己的版本。当 OnTriggerEnter 时,存储集合中涉及的两个碰撞器。当调用 OnTriggerExit 时,检查涉及的两个碰撞器,如果已经退出集合,则将它们从集合中移除。这就是我在 this 中所做的使用 CollisionDetection 脚本发布。

CollisionDetection 脚本附加到将发生碰撞的对象上。

要检查 Collider 是否正在接触另一个 Collider,请更改:

if (colliderBox.isTouching (col) && col.CompareTag("barrier")) { }

到:

if (CollisionDetection.IsTouching (colliderBox.gameObject, col.gameObject) && col.CompareTag("barrier")) {  }

您还可以为 CollisionDetection 类添加 ExtensionMethod:

public static class ExtensionMethod
{
public static bool IsTouching(this Collider collider, Collider otherCollider)
{
return CollisionDetection.IsTouching(collider.gameObject, otherCollider.gameObject);
}

public static bool IsTouching(this GameObject collider, GameObject otherCollider)
{
return CollisionDetection.IsTouching(collider, otherCollider);
}
}

现在,假设 colliderBox 是一种ColliderGameObject

关于c# - Collider.isTouching 用于 3D 碰撞器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53453014/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com