Last active
June 2, 2020 02:50
-
-
Save tsubaki/2d6de15ee29bd039958c to your computer and use it in GitHub Desktop.
画面にアスペクト比固定でフィットするようにスプライトの大きさを変更する。http://tsubakit1.hateblo.jp/entry/20140710/1405004237 の応用
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using UnityEngine; | |
[RequireComponent(typeof(SpriteRenderer))] | |
public class Scaler : MonoBehaviour { | |
// スプライトが大きさを合わせたいカメラ | |
[SerializeField] private Camera mainCamera; | |
// コンポーネントのキャッシュ | |
[SerializeField, HideInInspector] private SpriteRenderer spriteRender; | |
[SerializeField, HideInInspector] private Transform _transform; | |
// コンポーネント登録時に事前計算(or コンテキストメニューのReset) | |
void Reset() | |
{ | |
// コンポーネントのキャッシュ | |
spriteRender = GetComponent<SpriteRenderer>(); | |
_transform = GetComponent<Transform>(); | |
// MainCameraを取得し、カメラの中央まで移動 | |
mainCamera = GameObject.FindGameObjectWithTag("MainCamera").GetComponent<Camera>(); | |
_transform.position = mainCamera.transform.position + mainCamera.transform.forward; | |
} | |
void Update () | |
{ | |
UpdateSpritesize(); | |
} | |
void UpdateSpritesize() | |
{ | |
// スプライトのアスペクト比を取得。 | |
var sprite = spriteRender.sprite; | |
var spriteaspect = sprite.rect.width / sprite.rect.height; | |
// アス比に合わせてスプライトのサイズを変更 | |
if( mainCamera.aspect > spriteaspect){ | |
var spritesize = sprite.rect.height / sprite.pixelsPerUnit * 0.5f; | |
var screenrate = Camera.main.orthographicSize / spritesize; | |
_transform.localScale = Vector3.one * screenrate; | |
}else{ | |
var spritesize = sprite.rect.width / sprite.pixelsPerUnit * 0.5f; | |
var screenrate = Camera.main.orthographicSize * Camera.main.aspect / spritesize; | |
_transform.localScale = Vector3.one * screenrate; | |
} | |
} | |
} |
Author
tsubaki
commented
Jul 10, 2015
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment