2017-10-03 8 views
0

私の質問は重複しないことを願っています。 カプセルコライダーの機能を一体化させる方法

Game_Controller.Database [m, n].Nute_M.AddComponent(typeof(CapsuleCollider)); 
Game_Controller.Database [m, n].Nute_M.GetComponent<CapsuleCollider>().center.y = 0.17f;Game_Controller.Database [m, n].Nute_M.GetComponent<CapsuleCollider>().radius = 0.72f; 
Game_Controller.Database [m, n].Nute_M.GetComponent<CapsuleCollider>().height = 0.64; 
Game_Controller.Database [m, n].Nute_M.GetComponent<CapsuleCollider>().direction = 2; 

しかし、私は

`Cannot modify a value type return value of `UnityEngine.CapsuleCollider.center'. Consider storing the value in a temporary variable` 

エラーを取得: 私はランタイム に私のコードをカプセルコライダーの機能を変更する必要があります。 私を助けてください。

+0

私は非常にアマチュアですunity3d ...すみません。 –

答えて

0

CapsuleCollider.centerVector3である。別のクラスのauto-propertyとして宣言されているVector3のプロパティは変更できません。そのコピーを作成し、y軸を変更してCapsuleCollider.centerに割り当てます。

また、CapsuleCollider>().heightは浮動小数点型なので、0.64fの末尾にfを追加する必要があります。

//Make a copy 
Vector3 center = Game_Controller.Database [m, n].Nute_M.GetComponent<CapsuleCollider>().center; 
//Modify the copy's y axis 
center.y = 0.17f; 
//Apply to the target object 
Game_Controller.Database [m, n].Nute_M.GetComponent<CapsuleCollider>().center = center; 

Game_Controller.Database [m, n].Nute_M.GetComponent<CapsuleCollider>().radius = 0.72f; 
Game_Controller.Database [m, n].Nute_M.GetComponent<CapsuleCollider>().height = 0.64f; 
Game_Controller.Database [m, n].Nute_M.GetComponent<CapsuleCollider>().direction = 2; 

あなたはちょうどそれがクラスであることから、それは参照を格納しますCapsuleColliderことをキャッシュできるようGetComponentを毎回使用する必要はありません。

//Get CapsuleCollider collider 
CapsuleCollider cCollider = Game_Controller.Database [m, n].Nute_M.GetComponent<CapsuleCollider>(); 
//Make a copy 
Vector3 center = cCollider.center; 
//Modify the copy's y axis 
center.y = 0.17f; 
//Apply to the target object 
cCollider.center = center; 

cCollider.radius = 0.72f; 
cCollider.height = 0.64f; 
cCollider.direction = 2; 
関連する問題