前提・実現したいこと
初歩的な質問で申し訳ございません。
FBXデータにて、一部品に複数のマテリアル色が備わっているモデルを左クリックで選択したときにすべてのマテリアルを赤色に変更したいと考えております。
マテリアル色の割り当て数に限らず、全部の色を赤色に変えたいと思っています
発生している問題・エラーメッセージ
一番上のマテリアルだけ、色が変更されます。下に並んでいるすべての色を一緒に変更したいです。
該当のソースコード
C#
1ソースコード 2//オブジェクトにコライダーを割り当てて、『default_color』を初期色、『select_color』で赤色に設定しています。オブジェクトにマウスが乗っていないところでクリックすると、元に戻るようにするためです。 3void Start() 4 { 5 beRay = false; 6 default_color = GetComponent<Renderer>().material.color; 7 select_color = Color.red; 8 mat = this.gameObject.GetComponent<Renderer>().material; 9 } 10 11void Update(){ 12 if(Input.GetMouseButtonDown(0)) 13 { 14 RayCheck(); 15 } 16 if (Input.GetMouseButtonUp(0)) 17 { 18 beRay = false; 19 } 20} 21 22private void RayCheck() 23 { 24 this.gameObject.GetComponent<Collider>().enabled = true; 25 mat.color = default_color; 26 27 Ray ray = new Ray(); 28 RaycastHit hit = new RaycastHit(); 29 ray = Camera.main.ScreenPointToRay(Input.mousePosition); 30 31 if (Physics.Raycast(ray.origin, ray.direction, out hit, Mathf.Infinity) 32 && hit.collider == gameObject.GetComponent<Collider>() 33 ) 34 { 35 beRay = true; 36 mat.color = select_color; 37 } 38 39 else 40 { 41 this.gameObject.GetComponent<Collider>().enabled = false; 42 43 beRay = false; 44 hit.collider.gameObject.GetComponent<ChangeColor>(); 45 mat.color = default_color; 46 } 47 } 48
お手数をおかけいたしますが、どなたかご教示いただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/22 00:55