2017-02-01 70 views
0

我似乎无法找到对此的答案,我相信现在无法做到这一点。将gameobject设置为非活动状态并显示最小值

我有一个玩家收集gameobjects,当gameobjects收集他们成为玩家的孩子。所有的gameobjects都有一个不同质量的刚体,但是重复的gameobjects有相同的质量偏差。

当游戏对象被收集时,玩家大量增长。

我想要做的是,当玩家达到一定的质量和收集另一个gameobject时,我想让最小质量的gameobject设置为不活动。

我已经得到了这个:

     Component[] objects = GetComponentsInChildren(typeof(Rigidbody), false); 
        foreach (Rigidbody joint in objects) 
        { 
         float smallest = Mathf.Min(joint.mass); 
         if (smallest <= mass/100 && joint.gameObject.activeInHierarchy) 
         { 
          int i = 0; 
          bool plus = false; 
          while (i < transform.childCount) 
          { 
           if (transform.GetChild(i).gameObject.activeInHierarchy && plus == false) 
           { 

            transform.GetChild(i).gameObject.SetActive(false); 
            Debug.Log("disabled"); 
            plus = true; 
           } 

            i++; 
          } 
         } 
        } 

这台播放器不活动的第一个孩子游戏物体达到一定数额的质量之后。

但是这不是我真正想要的,我想获得最小质量的gameobject来设置不活动,但我不能转换“float minimum = Mathf.Min(joint.mass);”回到一个gameobject。

这是可能达到或仅仅是不可能的吗?

回答

4

当然有可能我的朋友

using System.Linq // < --- at top of script 

List<Rigidbody> objects = GetComponentsInChildren<Rigidbody>(false) 
    .OrderBy(i => i.mass) 
    .ToList(); 
Rigidbody smallest = objects.FirstOrDefault(); 
+0

OMG我不知道System.Linq的。我猜我必须学习更多。这完全工作,一直坚持这个为2天,谢谢你非常mutch竖起大拇指! –

相关问题