【Unity】Unity unitの範囲について
Q&A
1Unity Unit =1メートル
という事は、以下の記事などから確認できたのですが、
その1Unity Unit
は10×10のグリッドで構成された 大きなスクエア のことをさすのか、
このスクエアを構成する 小さなスクエア のことをさすのか
ご存じの方いましたら教えていただけますと助かります
Q&A
1Unity Unit =1メートル
という事は、以下の記事などから確認できたのですが、
その1Unity Unit
は10×10のグリッドで構成された 大きなスクエア のことをさすのか、
このスクエアを構成する 小さなスクエア のことをさすのか
ご存じの方いましたら教えていただけますと助かります
unitというのは、「ワールド座標における1.0の単位」です。
例えば、
transform.position = new Vector3(0.0f, 1.0f, 0.0f);
というようなスクリプトを実行した場合に、リアル社会でいうとどれぐらいの移動量になるか、という話です。
2Dはあまり知らないのですが、ちょっと見た限りだと1動かすと小さいグリッド単位で移動するので、答えとしては「小さいグリッド」になると思います。
ただし、これはあくまで「デフォルト」です。
あくまで複数人での認識を合わせるためのものです。
例えば、「人を走らせて」というリクエストがあったとします。
デザイナがモデルを「1=1m」として作成し、プログラマが「1=1cm」として動かしたら、まともに動きませんね。
だから、認識を合わせる必要があります。
ゲーム開発では、特に「1=1m」という話はなく、プロジェクトによってバラバラなのですが、Unityでは「1=1m」と言われています。
この理由について、ハッキリと書かれたものは見たことがないのですが、おそらくUnityの各設定(重力など)がデフォルトでそのように設定されているからだと自分は思ってます。
あと、「1m」と言ってわかるとおり、これは現実的なものに関する話です。
UIなど非現実的なものに対しては、あまり使われません。
(「このボタンを30cmx10cmで配置してね」という人は、聞いたことがありません)
あと、「1m」と言ってわかるとおり、これは現実的なものに関する話です。
UIなど非現実的なものに対しては、あまり使われません。
(「このボタンを30cmx10cmで配置してね」という人は、聞いたことがありません)
https://pengoya.net/unity/pixelsperunit/
これに補足すると2D UIにおけるUnitはPPUという概念で現実の単位系と言えるpixelと紐づけており、1unitあたりのピクセル数で表現されます(sprite単位で設定できる)
結論からいうと2D UIにおいてはUnit=1mではないといえます
PPUは自分で設定できるので1unit=16ピクセルかもしれないし100ピクセルかもしれません
例えばどこで使うのかというとCamera.orthographicSize
は 単位がUnitです。
例えば2Dのブロック状のゲームUIを投影するカメラがある場合
・1ブロックの大きさが100px
・合わせてppu=100pxでSpriteを作成
・ゲームエリアが10x10のブロック
である場合カメラのサイズは以下のように設計します
これだけ見れば縦横1000pxのゲームエリアであることは自明ですがUnityの単位はUnitなので1000/100[ppu]で10Unit*10Unitのゲームエリアであるといえます。
orthographicSizeは縦方向の半径なのでSize=5(縦10Unitなので2で割る)と求めることができます
このようにPPUという単位を使うことでtexture素材(厳密にはSpriteのインポート設定)の大きさとUnit単位を紐づけて仕様を検討できます
最近マルチ解像度対応でこの辺苦労しました(汗)
逆にPPUを指定することでグラフィックデザイナーがpixel単位でのサイズ調整とゲーム上の見え方をリンクして考えることが出来るのでグラフィック仕様書も書きやすくなります
プロジェクトの性質によってベストプラクティスが決まる奥深い世界なのでいまだによくわかってないですが2DにおけるUnitとはこういったものです。
参考
https://qiita.com/ToshimasaKitamura/items/684839271bf332ce932d
https://unity.com/ja/blog/engine-platform/choosing-the-resolution-of-your-2d-art-assets