白黒羊

【Unity】Pixel Perfect パッケージを使ったときに引っかかったこと

概要

ドット絵のゲームを作るためにUnity公式のPixel Perfectパッケージを使ってみました。

環境

Unity Editor 2021.2.0b4

com.unity.2d.pixel-perfect 5.0.0

URPで使う

URPでプロジェクトを作ってから PixelPerfect Camera を設置してみたらInspectorに以下のようなメッセージが表示されました。

Pixel Perfect Camera in the 2D Pixel Perfect package isn't compatible with Scriptable Render Pipeline. If you are using Lightweight Render Pipeline, you can swap this for the Pixel Perfect Camera component that ships with LWRP.

ここではLWRPと表示されていますが、実際に使いたいのはURPなので以下のリンクを参考にしながらURPの設定を行います。

これができたら置き換えろというメッセージにしたがってURP用のPixel Perfectに置き換えてみます。

全く同じ名前なので判断できませんがどっちかです(私の場合は上が正解でした)。

これで警告が消えました。

画像を並べる

Pivot Unit ModePixelsにするにはPivotCustomにする必要があります。その調整を怠ると、特に縦横幅のpixelが奇数の画像を使っているときに半ピクセル分ズレてピクセルパーフェクトではなくなってしまいます。

https://forum.unity.com/threads/cant-apply-pivot-unit-mode-change-in-the-sprite-editor.744116/

また、特にクォータービュー、アイソメトリックビューのような擬似3Dのような2Dゲームでは画像の重なり順が特に重要になります。通常、Project Settings > Graphics から Transparent Sort Axis で重なり順を指定しますが、

URP を使っているとその設定ができません。

https://forum.unity.com/threads/transparency-sort-mode-and-lightweight-render-pipeline.651700/

その場合は、 New 2D Renderer Data の Inspector から Transparency Sort ModeCustom Axis に変更して、そこで X=0 Y=1 Z=-0.26 とかにしてあげるとクォータービュー的には良い感じになります。

設定したのに反映されないときはUnityEditorの再起動が効くかもしれません。

歩ける範囲を指定する

このような感じで外側にColliderを設定して動かすもの(プレイヤーとか)にもColliderRigidBodyを設定すると外に出られなくなります。
RigidBody設定後は重力を切ったり、RotationをFreezeさせないとプレイヤーが勝手に動いてしまうので注意が必要です。

参考

https://blog.unity.com/ja/technology/2d-pixel-perfect-how-to-set-up-your-unity-project-for-retro-8-bits-games