2016-11-08 13 views
0

私はUnityのためのC#を使用しています、私は2つのオブジェクト(スクリプトファイルを有するものである現在のもの、と私はその材料を変更したい他のものを)持っている、これは私のコードです:Unityで他のオブジェクトを制御するには?

public class PlayerController : MonoBehaviour { 

public Material[] material; 
Renderer rend; 

public float speed; 

private Rigidbody rb; 

void Start() 
{ 
    rend = GetComponent<Renderer>(); 
    rend.enabled = true; 
    rend.sharedMaterial = material [0]; 

    rb = GetComponent<Rigidbody>(); 
} 

void FixedUpdate() 
{ 
    float moveHorizontal = Input.GetAxis ("Horizontal"); 
    float moveVertical = Input.GetAxis ("Vertical"); 

    Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical); 

    rb.AddForce (movement * speed); 
} 

void OnTriggerEnter(Collider other) 
{ 
    if (other.gameObject.CompareTag ("Pick Up")) 
    { // Here is the problem, it will change the color of the current object not the other one 
     rend.sharedMaterial = material [1]; 
    } 
} 
} 

助けてください! ありがとうございました

答えて

1

あなたのrendオブジェクトはstartメソッドで設定されています。あなたは、あなたがそのsharedMaterialにアクセスすることができRendererにアクセスするには、他の変数にGetComponentを使用する必要が

if (other.gameObject.CompareTag ("Pick Up")) 
{ 
    var changeColorObject = other.GetComponent<Renderer>(); 
    changeColorObject.sharedMaterial = material [1]; 
} 
+0

ありがとうございます。 –

1

:私はあなたのような他のゲームオブジェクトを取得する必要があると思います。

void OnTriggerEnter(Collider other) 
{ 
    if (other.gameObject.CompareTag("Pick Up")) 
    { 
     //Get Renderer or Mesh Renderer 
     Renderer otherRenderer = other.GetComponent<Renderer>(); 
     otherRenderer.sharedMaterial = material[1]; 
    } 
} 
+1

ありがとうございました! –

関連する問題