ぶつかった相手のマテリアルを取得して、同じ色に変化させてみましょう。
Cube(プレーヤー)を操作して、青色のオブジェクトに触れると、プレーヤー自身も青色になります。
Colliderが触れたタイミングで、Materialを取得できるようにスクリプトを作ります。
関連記事:
触れた相手のオブジェクト名を取得
OnCollisionEnterとOnTriggerEnterの違い
領域に入っている間と離れたときに発生
オブジェクトから離れるとイベント発生
触れている間はイベントを発生させる
一瞬だけオブジェクトの色を変える
他のマテリアルを変数として取得する
Rayを使ってマテリアルカラーを取得
触れたオブジェクトのマテリアルを取得する
Cubeを2個作成し、一方をBlueCubeに名前変更します。
BlueCubeに青色のマテリアルを付け、横並びに配置します。
Cubeにリジッドボディを追加。
重力を使用のチェックを外し、回転を固定します。
ColorChange.csを作成し、Cubeに追加します。
ColorChange.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ColorChange : MonoBehaviour { public GameObject obj; public Color objColor; void Update() { float dx = Input.GetAxis("Horizontal") * Time.deltaTime * 3; float dz = Input.GetAxis("Vertical") * Time.deltaTime * 3; transform.position = new Vector3 ( transform.position.x + dx, 0, transform.position.z + dz ); } void OnCollisionEnter(Collision collision){ obj = collision.gameObject; objColor = obj.GetComponent<Renderer>().material.color; GetComponent<Renderer>().material.color = objColor; } } |
ゲームプレイして、Cubeを動かし、青色のCubeにぶつけてみましょう。
Cube(プレーヤー)自身も、青色に変わりました。
関連記事:
触れた相手のオブジェクト名を取得
OnCollisionEnterとOnTriggerEnterの違い
領域に入っている間と離れたときに発生
オブジェクトから離れるとイベント発生
触れている間はイベントを発生させる
一瞬だけオブジェクトの色を変える
他のマテリアルを変数として取得する
Rayを使ってマテリアルカラーを取得