シーン上のカメラの映像をレンダーテクスチャを使って、オブジェクトに映してみました。
まずフォルダ内で右クリックからレンダーテクスチャを新規作成します。
映像を撮るカメラのCameraコンポーネントのTarget Textureにこのレンダーテクスチャをドラッグアンドドロップします。
新しいマテリアルを作って、Albedoの横の四角形にレンダーテクスチャをドラッグアンドドロップします。
このマテリアルをシーン画面やヒエラルキーウィンドウの、映像を映したいオブジェクトにドラッグアンドドロップします。
これで、カメラの映像がレンダーテクスチャを通してオブジェクトの表面に映し出されます。
カメラの位置・方向を楽に変更する
動かしたいカメラをヒエラルキー上で選択します。
シーン上で右クリックを押しながらW,A,S,Dで視点を移動し、映したいものが丁度良く画面に収まるところへ移動します。
そこで、Ctrl + Shift + Fを押すか、GameObject -> Align With Viewをクリックします。
すると、選択されているオブジェクトが、シーン画面の視点と同じ位置に移動し、同じ方向を向きます。
逆に、選択したオブジェクトにシーン画面の視点を合わせるには、オブジェクトを選択して GameObject -> Align View to Selected をクリックします。
出現する玉の色をランダムで変える
ボールを出現させたいところに、空のゲームオブジェクトを置きます。
このゲームオブジェクトにスクリプトを付けます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameScript4 : MonoBehaviour
{
public GameObject sphere;
public float power = 1f;
public float interval = 0.3f;
bool generateSphere = false;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.E))
{
if (generateSphere)
{
generateSphere = false;
StopCoroutine("GenerateSphere");
}
else {
generateSphere = true;
StartCoroutine("GenerateSphere", interval);
}
}
}
IEnumerator GenerateSphere()
{
while(true)
{
// Sphereを生成する
var s = Instantiate(sphere, transform.position + new Vector3(Random.Range(-1f, 1f), 0f, Random.Range(-1f, 1f)), transform.rotation);
s.GetComponent<Rigidbody>().AddForce(transform.up * power, ForceMode.Impulse); // 上方向の力を与える
// ランダムでSphereの色を変える
s.GetComponent<MeshRenderer>().material.color = new Color(Random.Range(0f,1f), Random.Range(0f, 1f), Random.Range(0f, 1f), 1f);
yield return new WaitForSeconds(interval);
}
}
}
コルーチンの中の繰り返し処理でSphereを生成し続けます。Eキーでコルーチンのオンオフをします。
Sphereのインスタンスを生成して、上方向の力を加えた後に、SphereについたMeshRendererコンポーネントを取得して、colorメンバに色を代入するとSphereの色を変えられます。
色はnew Color()に、0.0~1.0のRGBAの値を入れると得られます。この値を、Random.Range()を使ってランダムの値にしています。
s.GetComponent<MeshRenderer>().material.color = new Color(Random.Range(0f,1f), Random.Range(0f, 1f), Random.Range(0f, 1f), 1f);
Sphereを新規作成して、コライダーとRigidbodyを付けておきます。
SphereをProjectの適当なフォルダにドラッグアンドドロップして、プレハブ化します。
最後に、Sphereのプレハブを上のスクリプトにアタッチします。