C# 如何有选择地禁用球体碰撞器?

C# 如何有选择地禁用球体碰撞器?,c#,unity3d,C#,Unity3d,我正在尝试建立一个水池游戏,在这个水池里有一个对撞机。现在关于与球的碰撞,我希望碰撞的特定球将禁用 下面的代码是我尝试过的,但它只允许我手动设置球。我如何自动控制并直接检测正确的球 using UnityEngine; using System.Collections; public class pot: MonoBehaviour { //allows me to set collider public SphereCollider ball; void On

我正在尝试建立一个水池游戏,在这个水池里有一个对撞机。现在关于与球的碰撞,我希望碰撞的特定球将禁用

下面的代码是我尝试过的,但它只允许我手动设置球。我如何自动控制并直接检测正确的球

using UnityEngine;


using System.Collections;    
public class pot: MonoBehaviour
{   //allows me to set collider
    public SphereCollider ball;

    void OnTriggerEnter(Collider other) {
        Debug.Log("Ball potted");
        ball = GetComponent<SphereCollider>();
        ball.enabled = !ball.enabled;
        }

}
使用UnityEngine;
使用系统集合;
公共类大麻:单一行为
{//允许我设置碰撞器
公共球形校准器球;
无效对撞机(对撞机其他){
调试日志(“球封装”);
ball=GetComponent();
ball.enabled=!ball.enabled;
}
}

你在找什么?


您在寻找什么?

看起来您的代码正在获取pot本身的球体碰撞器。在这种情况下,“其他”不是球吗


您可以使用“other.gameObject.SetActive(false)”禁用“other”对象(假设它是球)——如果您希望整个球消失的话。如果你只是想让它的碰撞器停止工作,那么使用“other.enabled=false”。

看起来你的代码正在获取pot本身的球体碰撞器。在这种情况下,“其他”不是球吗

您可以使用“other.gameObject.SetActive(false)”禁用“other”对象(假设它是球)——如果您希望整个球消失的话。如果您只是想让碰撞器停止工作,请使用“other.enabled=false”。

公共SphereCollider SphereCollider;
无效更新()
{
if(Input.GetKeyDown(KeyCode.Q))//或者以您想要的方式调用它。
{
sphereCollider=gameObject.GetComponent();
sphereCollider.enabled=false;
}
}
公共球形采集器球形采集器;
无效更新()
{
if(Input.GetKeyDown(KeyCode.Q))//或者以您想要的方式调用它。
{
sphereCollider=gameObject.GetComponent();
sphereCollider.enabled=false;
}
}

Other是指任何其他碰撞器,是吗?是的,是这样。您的类称为“pot”,因此我假设此代码附加到pot,而运行到pot(另一个)中的对象就是球。如果还有其他东西也能击中罐子,那么你可以使用标签来区分它们。每个球对象都可以标记为“ball”,然后您可以使用“if(other.gameObject.tag==“ball”){other.gameObject.SetActive(false);}”哇,太好了!我不知道其他的。非常感谢。其他是指任何其他对撞机,是吗?是的,这是真的。您的类称为“pot”,因此我假设此代码附加到pot,而运行到pot(另一个)中的对象就是球。如果还有其他东西也能击中罐子,那么你可以使用标签来区分它们。每个球对象都可以标记为“ball”,然后您可以使用“if(other.gameObject.tag==“ball”){other.gameObject.SetActive(false);}”哇,太好了!我不知道其他的。非常感谢。我必须声明other,还是它是内置的?other关键字来自函数的参数。void OnTriggerEnter(Collider other)我必须声明other吗?还是它是内置的?other关键字来自函数的参数。无效对撞机(对撞机其他)
other.enabled = false;
public SphereCollider sphereCollider;

void Update()
{
    if (Input.GetKeyDown(KeyCode.Q)) //or however you want to call it.
    {
        sphereCollider = gameObject.GetComponent<SphereCollider>();
        sphereCollider.enabled = false;
    }
}