【Unity】【シェーダ】ディザ抜きで半透明描画を実現する

f:id:halya_11:20180131204054p:plain:w300

今回はディザ抜きと呼ばれる半透明表現をやってみます。

ディザ抜き?

ディザ抜きは、半透明の表現手法ではありますが、不透明のパスで描画します。
不透明で描画したピクセルに対して一定間隔で穴を空けることで、半透明であるかのように見せかけます。

続きを読む

【Unity】PCとスマホ両対応のタッチ判定

PCとスマホの両方で動作するタッチ(クリック)検知クラスを作成しました。

Unityのタッチ検知

Unityでクリックやタッチを検知する場合、こんな感じの処理を書きます。

// クリック(PC)
if (Input.GetMouseButtonDown(0)) {
    // 処理
}

// タッチ(スマホ)
if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began) {
    // 処理
}

これはつまり、エディタとスマホで処理を分けないといけないということです。

まあ正確には Input.GetMouseButtonDown() はスマホでも使えますが、
マルチタッチなどを考えると Input.GetTouch() を使うほうがいいでしょう。

ただ、判定するたびにいちいち処理をわけるのもあほらしい・・
というわけでそのあたりをラップするクラスを作りました。

続きを読む

【Unity】【シェーダ】ノーマルマップを合成(ブレンド)する

ノーマルマップの合成の仕方について、日本語の情報が意外と少ないので書いておきます。

ノーマルマップの合成?

例えば皮膚を表現するとき、毛穴などの細かい凹凸を表現するのに2枚目のノーマルマップを使用することがあります。

StandardShader にもノーマルマップが二つ設定できるようになっています。

f:id:halya_11:20180129195253p:plain

自分でシェーダを書く場合には、ノーマルマップの合成の仕方を知っておく必要があります。

続きを読む