Rayにぶつかったオブジェクトのマテリアルカラーを取得できるように、スクリプトを作ってみましょう。
今回の例では、Raycastを下に出し、床面のカラー情報を取得して、ログを表示します。
関連記事:
ぶつかったオブジェクトと同じカラーにする
Raycastの照射に当たれば色が変わる
複数のマテリアルをスクリプトで切り替え
Raycastに当たったカラーを取得する
まずは床オブジェクトとして、Cubeを2個作成し、サイズを変更します。
適当な値でマテリアルを作り、それぞれに追加します。
横並びに配置します。
新しくCubeを作成し、床の上に置きます。
RayScript.csを作成し、Cubeに追加します。
RayScript.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 25 26 27 28 29 30 31 32 33 34 35 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class RayScript : MonoBehaviour { private float rayDistance; private Color floorColor; private GameObject floorObject; void Start() { rayDistance = 1.0f; } void Update() { Vector3 rayPosition = transform.position + new Vector3(0.0f, 0.0f, 0.0f); Ray ray = new Ray(rayPosition, Vector3.down); Debug.DrawRay(rayPosition, Vector3.down * rayDistance, Color.red); RaycastHit hit; if(Physics.Raycast(ray, out hit, rayDistance)) { floorObject = hit.collider.gameObject; floorColor = floorObject.GetComponent<Renderer>().material.color; } Debug.Log(floorColor); float x = Input.GetAxis("Horizontal") * Time.deltaTime * 3.0f; float z = Input.GetAxis("Vertical") * Time.deltaTime * 3.0f; transform.position = new Vector3 (transform.position.x + x, transform.position.y, transform.position.z + z); } } |
ゲームプレイして、十字キーで動かしてみましょう。
床のマテリアルカラー情報が、コンソールで確認できています。
関連記事:
ぶつかったオブジェクトと同じカラーにする
Raycastの照射に当たれば色が変わる
複数のマテリアルをスクリプトで切り替え