Unity 立方体でそれぞれ違う面にテクスチャを貼る方法

UnityTips

UnityTipsです。

立方体で別々にテクスチャを 貼る方法を見ていきます。 

キューブにテクスチャを貼ってしまうと 

1枚絵になってしまうので  

別々に貼ることはできません。

これだとサイコロなどを作るときに、同じになってしまいます。 

しかし、 plainやクアッドを使って 

立方体を作れば、それぞれ貼ることが可能です。 

こちらの画像のようにすることができます。 ↓

左がただのキューブにマテリアルを貼ったもの 

右がplainでキューブを作り 

画像やマテリアルを貼ったものになります。 

作り方ですが 

まずplainを6枚用意して キューブのように設置します。

ギズモなどを使い、視点移動しながらやれば 作りやすいです。

この画像の例だと、拡大縮小を全部0.1に 設定しています。 

あとは 空のオブジェクトを作って 

その中にplainを全部入れて、親子関係にすれば 

完成です。  

親子関係にすれば、全部一緒に動くので 

普通のキューブと同じようにすることができます。

しかし、 この状態で

マテリアルや画像をplainに貼ると 片方にしか 

表示できないという 問題が起きます。

 

両面に表示する方法

両面にするには シェーダーを変えてあげる必要があります。 

プロジェクトビューで「Create」→「Shader」→「Unlit Shader」

を選んでください。 

日本語だと、光学処理のないシェーダー となっているので 

そちらを選択します。 

では、UnlitShaderを入れたら ダブルクリックをして 

開きましょう。 

開いたら、次にコードを変更します。 

すでにあるコードを消して 

こちらのコードを入れてください。 

Shader "Unlit/culloff" //変更部分
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
}
SubShader
{


//変更部分↓

Tags { "RenderType" = "Transparent" "Queue" = "Transparent" }
LOD 100
Cull off
Blend SrcAlpha OneMinusSrcAlpha

Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
// make fog work
#pragma multi_compile_fog

#include "UnityCG.cginc"

struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};

struct v2f
{
float2 uv : TEXCOORD0;
UNITY_FOG_COORDS(1)
float4 vertex : SV_POSITION;
};

sampler2D _MainTex;
float4 _MainTex_ST;

v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
UNITY_TRANSFER_FOG(o,o.vertex);
return o;
}

fixed4 frag (v2f i) : SV_Target
{
// sample the texture
fixed4 col = tex2D(_MainTex, i.uv);
// apply fog
UNITY_APPLY_FOG(i.fogCoord, col);
return col;
}
ENDCG
}
}
} 

ここまで 

変更部分と書いてあるところが追加したコードです。 

これはようするに、カリング設定をoffにしているわけですね。 

ではこちらを入れたら、保存して閉じます。 

あとはplainを選択して、 今作ったシェーダーを入れてあげれば 

OKです。 

これで、両面にマテリアルが反映されました。↓

コメント

タイトルとURLをコピーしました