質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Blender

Blenderとは、オープンソースの3DCGソフトウェアです。フリーでありながら、3Dモデル作成、レンダリング、アニメーション、コンポジットなどのハイエンドに匹敵する高い機能を持ち、さらにゲームエンジンも搭載しています。

Q&A

解決済

2回答

6780閲覧

Unity キューブを転がして、触れた面と同じ色に他のオブジェクトを染めるゲームを作りたいです。

YYGAME

総合スコア15

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Blender

Blenderとは、オープンソースの3DCGソフトウェアです。フリーでありながら、3Dモデル作成、レンダリング、アニメーション、コンポジットなどのハイエンドに匹敵する高い機能を持ち、さらにゲームエンジンも搭載しています。

2グッド

3クリップ

投稿2017/02/16 05:39

Unityで色のついたキューブを転がして、触れたオブジェクトの色を染めるゲームを作成しています。

blenderで各面にマテリアル(色)を割り当ててキューブを作成しました。
色を塗る対象になるオブジェクトはUnityのキューブを使用しました。

そこで、対象となるキューブがオブジェクトに触れたとき、キューブの面に割り当てたマテリアルを取得させてオブジェクトの色を変えるスクリプトが書けなくて困っています。

どなたかどうしたらいいかわかる方がいましたら教えてください。

これが作業中の画面です。
よろしくお願いします。

イメージ説明

Hawn, kanitaoru👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

箇条書きですが。。。

1.キューブの各面に子要素としてSphereをもたせておく。Sphereは描画しないようにしておく。

イメージ説明
イメージ

2.各SphereにはSphere Colliderをもたせ、"Is Trigger"にチェックをいれておく。
(チェックをいれておくことにより物理動作には影響せずに、色を変えるためのスイッチとして使える。)

3.各Sphereに以下のようなスクリプトを貼り付けておく。

ChangeColor.cs

using UnityEngine; public class ChangeColor : MonoBehaviour { // Unityエディタ上で変えたい色を指定できる。 public Color color = Color.red; //オブジェクトが衝突したとき void OnTriggerEnter(Collider other) { IColorChangable changable = other.gameObject.GetComponent<IColorChangable>(); if(changable != null){ changable.ChangeColor(color); } } }

ここまででSphereはこんな感じになる↓

イメージ説明

4.色を変えたいオブジェクトには以下のようなスクリプトを貼り付けておく。
実際に色を変える処理はご自分で実装してください。

ColorChangable.cs

using UnityEngine; class ColorChangable : MonoBehaviour, IColorChangable { public void ChangeColor(Color color){ // ここで色を変える処理をする。 Debug.Log("change color to " + color); } }

5.このままでは、IColorChangableインターフェースが足りないので、以下のスクリプトを用意しておく。
(オブジェクトに貼り付ける必要はない。)

IColorChangable.cs

using UnityEngine; interface IColorChangable { void ChangeColor(Color color); }

だいたいこんな感じでいけるかと思います。

投稿2017/02/21 12:03

JunSuzukiJapan

総合スコア310

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YYGAME

2017/02/23 08:35

返事が遅くなり申し訳ありませんでした。 丁寧な回答ありがとうございます。 教えていただいた通りに実行したところ、うまく出来ました。 本当にありがとうございます。
guest

0

今後使うのが色々な形、となると使えない方法ですが、キューブであることが決まっているなら、あらかじめどの面が何色か、は決まっていると思うので、どの軸が下を向いているかを判定して、単純に軸の情報のみで色を求めたらいいのではないかな、と思いました。

投稿2017/02/16 08:29

edo_m18

総合スコア2283

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YYGAME

2017/02/16 09:16

迅速な回答ありがとうございます。 実はコースを立体にすることも考えていて、横向きの時にも対応させたいと考えていました。 質問に記入しておらず申し訳ありませんでした。 横の面にも対応させたいとしたらどのような方法がいいでしょうか
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問