哭了,来看看吧,是unity的问题,还是我的问题

触发器 的脚本怎么写?
圆柱和球都是实例化的,场景里有很多
球有动画,先进入触发器,触发器把球的动画速度设置为0
当圆柱进入触发器时,触发器怎么把之前进入的球的动画速度设置为1

不会C#,简单的能看懂一点,list不会用,请大家帮帮忙,谢谢

img

你早点把你的功能问题描述清楚嘛,你这么说就不用绕那么一大圈子让人家去猜你的需求了。
如你题所说的话,可以这么写,写个cube的碰撞检测脚本(挂到cube上):脚本内容大概如下:
你试一下,应该是这个意思吧(不用说去用b物体再获取a物体啥的东西)

private GameObject sphereObj;//缓存C物体碰撞检测到的球物体

    private void OnTriggerEnter(Collider other)
    {
        if (other.name=="球")//或者用物体的标签判断,other.tag=="写球的标签名"
        {
            other.GetComponent<Animator>().speed = 0;//球进入C物体将速度设置为0
             sphereObj = other.gameObject;//将碰撞到的球缓存下来
        }
        else if (other.name == "圆柱")//当碰撞到圆柱时
        {
            if (sphereObj!=null)//判断一下之前碰撞的球有没有保存,保存了这个对象就不为空
            {
                sphereObj.GetComponent<Animator>().speed = 1;//圆柱进入时,就将之前的球物体的动画速度设置为1
            }
        }
        
    }

还是就是你需要将上一个发生碰撞的球设置动画速度为1,还是需要将所以发生过碰撞检测的球都操作一遍?

private void OnTriggerEnter(Collider other)
{
    //获取其他物体的某个组件?
    other.gameObject.GetComponent<Animator>();
}

是这个意思吗?

List<GameObject> InTriggerGameObjects = new List<GameObject>();
private void OnTriggerEnter(Collider other)
{
    //先将所有进入触发器的物体都加到list内
    InTriggerGameObjects.Add(other.gameObject);
    //判断足够的数量 或者 需要的物体都进入到了other内
    //用list内的物体 获取对方的component
    foreach(var obj in InTriggerGameObjects)
    {
        //
    }
}

private void OnTriggerExit(Collider other)
{
    if(InTriggerGameObjects.Contains(other.gameObject))
        InTriggerGameObjects.Remove(other.gameObject);
}

当然是你的问题
高内聚,低耦合,你所有的物体都应该是跟触发器之间相互调用,而跟其他物体没有一毛钱关系
何况就算你物体A找到物体B了,但是如果在区域内有多于2个物体,你到底操作谁不操作谁呢
自己逻辑就没有理清

你上一个问题我已经给出解决方式了,既然A想通过C来获取B,只能是C上面有一个触发脚本,然后A通过触发C,读取C的脚本是否获取到了B,获取到B再进行操作B。