2017-02-01 22 views
0

私はこれに対する答えを見つけることができないようです。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++; 
          } 
         } 
        } 

は、これは、非アクティブプレイヤーの最初の子ゲームオブジェクトを設定します。

これは私が本当に欲しいものではありません。私は最小の質量を持つゲームオブジェクトを非アクティブにしたいのですが、 "float smallest = Mathf.Min(joint.mass);"ゲームオブジェクトに戻る。

これは実現可能か、それとも不可能なのでしょうか?もちろん

答えて

4

それは私がSystem.Linqのを知っていませんでした

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

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

OMG私の友人も可能です。私はもっ​​と多くを学ばなければならないと思う。それは完全に働いた、このような2日間のためにこれに固執されている非常にあなたが親指の親指をありがとう! –

関連する問題