SpriteStudio / SS5PlayerForUnity

OPTPiX SpriteStudio 5 Player for Unity
http://www.webtech.co.jp/spritestudio/
MIT License
39 stars 15 forks source link

v1.2.16 Unityの2DモードにおけるSS5PlayerForUnityのカメラサイズについて #152

Open aktskhara opened 8 years ago

aktskhara commented 8 years ago

SS5PlayerForUnityで提供されておりますCameraのInspector上のサイズ設定は以下のようになっております。 Camera2D Pixel (720p) = 360 Camera2D Pixel (1080p) = 540

例えば、Unityの2Dモードではデフォルトでこの値が5となっており、この値をSS5PlayerForUnityの再生用プレファブのCameraのSizeに適用しますとアニメーションデータの表示サイズが画面に収まらない大きさになってしまいます。 これを解消するためにCamera配下のViewのスケール調整で画面に収まるように表示しているのですが、このアプローチは正しいでしょうか?

2Dのゲームを作成するためにCameraのSizeを3.6、扱う画像のPixels Per Unitsを100(デフォルト)で設定し、画面の縦720ピクセルとして表示物の配置が可能な状態のプロジェクトを扱っていますが、これにSS5PlayerForUnityの再生用プレファブを組み込む際に、ViewのTransformのScaleを (0.009, 0.009, 1)にすると適切に表示されているのですが、これが正しい設定か確証が持てずに質問させて頂いております。

アドバイス頂けますと幸いです。

MasamiYitsuse commented 8 years ago

aktskhara様

お世話になっております。 UnityのOltho(平行投影)カメラのSizeの設定に関しては、乱暴に説明しますと 「その画面に物体を表示する際に1という数字を、どの程度の実際の大きさと解釈するか?」 という値だと思ってください。 つまり、TransformのScaleと同じようなものです。 ※カメラが実際に画面の描画を行う時の座標系は、画面を「(左端・上端)-1.0~(中央)0.0~(右端・下端)1.0」という形になっているために、こういった変換の基準値みたいなものが必要になります。

その上で、SS5PUで提供しているカメラ(Camera2D)は「"1"の値はピクセル単位である(たとえばTransformのXを1増やすと、実際の画面上で1ピクセル右にずれる……というような意味です)ことを実現するための設定です。 また、SS5PUの内部データは「1=ピクセル単位」として保持しています。

そのため、SS5PUにデフォルトで付いている「Camera2D」については ・720p(画面上から下が720ピクセルとする)については、「720/2」で「360」 ・1080p(画面上から下が1080ピクセルとする)については、「1080/2」で「540」 と設定されています。 ※「/2」しているのは、画面の空間の上下端が「-1~1」で2の幅であるためです。

以上を踏まえまして、CameraのSizeを他の値にした場合、行われていらっしゃる通りSS5PUのオブジェクト側のTransformのScaleを設定して、大きさを合わせる必要があります。

実際の値が「3.6」で、データを作る時に想定されていた画面解像度解像度(Dot by Dot)が720pである場合、 「3.6 / 360 = 0.01」 の値をScaleのxとyに設定する必要があります。 この値を基準とすると、0.009は0.01の近似値ですので、ほぼ妥当な値だということができると思います。

非常に乱暴な解説で申し訳ございませんが……検証に足る返信でしたでしょうか? もし、上記の内容に疑問などございましたら、ご質問下さいますと助かります。

aktskhara commented 8 years ago

考え方が間違えていないと言う事が確認出来ました。 迅速なご返答、ありがとうございました。

2015年10月16日 18:48 YITSUSE, Masami notifications@github.com:

aktskhara様

お世話になっております。 UnityのOltho(平行投影)カメラのSizeの設定に関しては、乱暴に説明しますと 「その画面に物体を表示する際に1という数字を、どの程度の実際の大きさと解釈するか?」 という値だと思ってください。 つまり、TransformのScaleと同じようなものです。

※カメラが実際に画面の描画を行う時の座標系は、画面を「(左端・上端)-1.0~(中央)0.0~(右端・下端)1.0」という形になっているために、こういった変換の基準値みたいなものが必要になります。

その上で、SS5PUで提供しているカメラ(Camera2D)は「"1"の値はピクセル単位である(たとえばTransformのXを1増やすと、実際の画面上で1ピクセル右にずれる……というような意味です)ことを実現するための設定です。 また、SS5PUの内部データは「1=ピクセル単位」として保持しています。

そのため、SS5PUにデフォルトで付いている「Camera2D」については ・720p(画面上から下が720ピクセルとする)については、「720/2」で「360」 ・1080p(画面上から下が1080ピクセルとする)については、「1080/2」で「540」 と設定されています。 ※「/2」しているのは、画面の空間の上下端が「-1~1」で2の幅であるためです。

以上を踏まえまして、CameraのSizeを他の値にした場合、行われていらっしゃる通りSS5PUのオブジェクト側のTransformのScaleを設定して、大きさを合わせる必要があります。

実際の値が「3.6」で、データを作る時に想定されていた画面解像度解像度(Dot by Dot)が720pである場合、 「3.6 / 360 = 0.01」 の値をScaleのxとyに設定する必要があります。 この値を基準とすると、0.009は0.01の近似値ですので、ほぼ妥当な値だということができると思います。

非常に乱暴な解説で申し訳ございませんが……検証に足る返信でしたでしょうか? もし、上記の内容に疑問などございましたら、ご質問下さいますと助かります。

— Reply to this email directly or view it on GitHub https://github.com/SpriteStudio/SS5PlayerForUnity/issues/152#issuecomment-148669762 .

aktskhara commented 8 years ago

確認完了ですのでクローズします。

DKAlpha commented 8 years ago

こちら投稿していただきましたご質問、報告などは他のユーザー様のFAQとして公開しておりますので、クローズせずに公開させていただいております。ご了承ください。