2016-10-03 9 views
3

2dスプライトで作成されたボーダーでスネークゲームを作成しました。この解像度では画像がきれいに見えるので、私のゲームウィンドウは16:9に設定されています。しかし、何かにスケーリングすると、ゲームが奇妙に見えるようになります。私はゲームのウィンドウをサイズ変更可能にしたい。現在の解像度に基づいてスプライトを伸縮させるにはどうすればよいですか?Unity-3d-5 16:9の他の解像度への拡大/縮小画像

  • 私はすでに、これは巨大なスプライトを生成16にスケールを変更するために、X、Y、Zスケールを使用して、高さの幅120及び1であるスプライトを作成しようとしています。
  • 私はキャンバススケーラーを使って実験していますが、成功しません。
  • 私のゲームの目標は、自分のゲームが16:9のようなあらかじめ定義された解像度に適合するのではなく、現在のウィンドウサイズに応じて拡大縮小することです。そのため、ウィンドウを極端に薄くすると、ゲームの境界線が極端に薄くなるだけでなく、境界線に遊びが残ります。

以下、私のスプライトの設定方法のスクリーンショットを掲載します。そしてそれらがどのように階層に置かれているか。

  • 境界スプライト - これはスプライトの幅が70ピクセルになりました。これはこれが私に与えられた方法です。

enter image description here

  • ボーダー階層、位置、スケール、回転にデフォルトです。次に、たとえば、BorderTopをy軸上で25移動させて、画面の上部に移動します。

enter image description here

  • カメラ設定 enter image description here

例解像度と現在の出力

  • 16:9 List item
  • 5:4 enter image description here

答えて

0

はすべての国境に簡単なスクリプトを追加します。

public class Border : MonoBehaviour { 

    enum BorderTypes 
    { 
     bottom, top, left, right 
    } 

    [SerializeField] float borderOffset = 0.1f; 
    [SerializeField] BorderTypes type = BorderTypes.top; 

    // Use this for initialization 
    void Start() { 
     switch (type) 
     { 
      case BorderTypes.bottom: 
       transform.position = Camera.main.ViewportToWorldPoint(new Vector3(0.5f, borderOffset, 10)); 
       break; 
      case BorderTypes.top: 
       transform.position = Camera.main.ViewportToWorldPoint(new Vector3(0.5f, 1 - borderOffset, 10)); 
       break; 
      case BorderTypes.left: 
       transform.position = Camera.main.ViewportToWorldPoint(new Vector3(borderOffset, 0.5f, 10)); 
       break; 
      case BorderTypes.right: 
       transform.position = Camera.main.ViewportToWorldPoint(new Vector3(1 - borderOffset, 0.5f, 10)); 
       break; 
      default: 
       break; 
     } 
    } 
} 
関連する問題