Unity備忘録39頁目「スプライトの表示、等々」

江上宿六です。

 

ここ数日は熱が出たりと体調不良で頭が今一つ回らない状態でして。

何事もあまりやる気が出ない感じですが覚えた事は記していきます。

 

という事でスプライトの表示です。 えらい基礎的な所に立ち返った感じも

ありますけど、3Dで作る場合はスプライトを使わない事も多くて逆に知らなかった

なんて事も実際ありましたので。 まぁ、使えるに越したことは無いわけです。

スプライトを使うには画像ファイルが必要なので用意し、それをプロジェクトに

インポートします。 この状態ではまだ使えないので少し設定をします。

f:id:y6yegami:20190710135517p:plain

画像を選択してインスペクターのTextureTypeをDefaultからSprite(2DandUI)に

変更したら下の方にあるApplyを押して適用します。 これだけです。 これで

スプライトとして扱えるようになると思います。 

 

表示方法も簡単です。 空のオブジェクトを生成したらインスペクターの

AddComponentでSpriteRendererを追加します。 そのSprite部分に先ほどの

スプライト化した画像をアタッチします。 そうしたら実行してみましょう。

f:id:y6yegami:20190710141827p:plain

まぁ、実行するまでもなくシーンにスプライトが表示されているとは思いますが。

ともかくスプライト化させる事ができればUIとか色々な所で使う事が出来るでしょう。

 

自分の場合はフィールド上でアイテムをアイコンで表示させてドロップさせたいので

以前作ったアイテムの所でモデルを表示していた所をスプライトにしてみます。

f:id:y6yegami:20190710152041g:plain

当然ながら横から見たらペラペラで、適切とは言い難い状態です。

これを解決するためにスクリプトを追加し、常に画面側を向くようにします。

f:id:y6yegami:20190710153509p:plain

f:id:y6yegami:20190710153630p:plain

 Cameraを宣言し、Start()でメインカメラを指定します。

f:id:y6yegami:20190710153834p:plain

Update()内でtransform.LookAt()を使って指定した方向を向かせているわけですが

どの向きを指定しているのかというとカメラが向いている逆の方向です。 

こうする事で常に画面の方を向いている状態になります。

 

この辺で一つやってしまいがちな事があるのですが、それはオブジェクトを

画面の方向ではなくカメラの方向(位置)に向けるという方法です。

真っ正面にそのオブジェクトがある場合は一見正しく見えたりもしますが

向きや位置が変わる事で恐らく求められた表現が得られなくなります。

f:id:y6yegami:20190710161345g:plain

ということで常に画面を向くスプライトの表示が出来ました。

 

こんな感じです。 あとおまけですが、スプライトでは影表示が微妙なので

アイテムのオブジェクトにSphereを追加し、MeshRenderer内のCastShadowsを

ShadowsOnlyにすることで簡単に丸影が作れたりします。 これをやる時に

親子関係が崩れたりCollisionで不具合が出ないように気をつけましょう。

 

次回はまた思いつき次第です。