2016-03-26 13 views
0

Bir bloğun y konumunu Unity'da dondurmak istiyorum.Unity Ridgidbody Kısıtlamaları, Donma Konumu Y

var test = GetComponent<Rigidbody>().constraints; 
test = RigidbodyConstraints.FreezePositionY; 

Bu hata ancak Y konumu dondurma değil ile geliyor: İşte benim C# kodudur.

Birisi bana yardımcı olabilir mi? Belgeleri okudum ama yaptıklarımı yapmam gerekiyor.

cevap

1

RigidbodyConstaints bir numaralandırma (enum, küçük kelime in the doc zihin), önce bir kopyasını yapmadan doğrudan değiştirmeniz gerekir olduğunu. Her enum

using UnityEngine; 
using System.Collections; 

public class PosFreezer : MonoBehaviour { 

    void Start() { 
     var rb = GetComponent<Rigidbody>(); 
     //Modify the constraints directly. 
     rb.constraints = RigidbodyConstraints.FreezePositionY; 
    } 
} 

Yani, unutmayın:

using UnityEngine; 
using System.Collections; 

public class PosFreezer : MonoBehaviour { 

    void Start() { 
     var rb = GetComponent<Rigidbody>(); 
     var constr = rb.constraints; //grab a copy (NOT a reference) 
     constr = RigidbodyConstraints.FreezePositionY; //(modify the copy) 
    } 
} 

Bu değildir: bu kodu ile, bu başarısız , bu yüzden değiştirmek o zaman, bu enum bir kopyasını çekiyoruz , reference type olan bir struct gibi bir değer, bir struct gibi bir değerdir. Bir değer türünün kopyasını almak ve yerel olarak değiştirmek muhtemelen istediğinizi yapmaz.

var test = GetComponent<Rigidbody>().constraints; 
test = RigidbodyConstraints.FreezePositionY; 
GetComponent<Rigidbody>().constraints = test; 

Ama bu durumda dağınık ve okunamaz için: Eğer yazılı olsaydı Kodunuz ancak aynı zamanda ızgaralarının.

+0

Çok teşekkürler! – Andrew