前提
Unityでゲーム開発をしています。自分のキャラクターが壁に近づいたら徐々に壁の色が変化するようにし、離れると徐々に元の色に戻っていくようにしたいのですがその方法がわかりません。
またオブジェクト間の距離をどのように扱えばいいのでしょう?
ご存知の方がいましたら是非教えていただきたいです。
実現したいこと
・オブジェクトが壁に近づいたら徐々に壁の色が変化するようにしたい。
・壁からの距離が遠くなると徐々に元の色に戻るようにしたい。
・RGBAを指定した値に変化させたい。
該当のソースコード
c#
1public class MaterialController : MonoBehaviour 2{ 3 //自分の位置 4 private Vector3 characterPositon = new Vector3(); 5 //壁の位置 6 private Vector3 wallPosition = new Vector3(); 7 8 [SerializeField] 9 private GameObject wallObj; 10 private Material wallMaterial; 11 12 //変化前の色 13 private Color startColor; 14 //変化後の色 15 private Color endColor; 16 17 // Start is called before the first frame update 18 void Start() 19 { 20 wallMaterial = wallObj.GetComponent<Renderer>().material; 21 startColor = new Color(0, 0, 0, 1.0f); 22 endColor = new Color(1.0f, 0, 0, 1.0f); 23 } 24 25 // Update is called once per frame 26 void Update() 27 { 28 characterPositon = this.gameObject.transform.position; 29 wallPosition = wallObj.transform.position; 30 31 //壁までの距離 32 var distance = Vector3.Distance(cubePosition, characterPositon); 33 34 //Color.Lerpを使う? 35 cubeMaterial.color = Color.Lerp(startColor, endColor, ); 36 } 37} 38
試したこと
Color.Lerpを使用したのですが、第三引数に何を置けばいいのかわからなかったため色の変化はできませんでした。
そもそもColor.Lerpでいいのかもわからず。。。
補足情報(FW/ツールのバージョンなど)
Unity 2021.1.24f1
回答1件
あなたの回答
tips
プレビュー