質問編集履歴

1 質問内容の変更

gyugyu

gyugyu score 6

2018/06/25 18:07  投稿

iphoneアプリをipad上でも画面が切れないように表示したい。
### 前提・実現したいこと
スマートフォン用アプリをUnityで開発しています。iphone専用アプリとして申請したところリジェクトされてしまいました。今回プログラムは外注しているので調整なら自分でもやれるのではないかと思いカメラの調整などをやってみましたがうまくいきません。
アスペクト比9:16のゲームを2:3でもプレイできるようにしたいのです。
スマートフォン用アプリをUnityで開発しています。iphone専用アプリとして申請したところリジェクトされてしまいました。今回プログラムは外注しているので調整なら自分でもやれるのではないかと思いカメラの調整などをやってみましたがうまくいきません。
カメラのインスペクターを調整しましたが、反映されないのでおそらくカメラスクリプトの設定なのだと思うのですが。
ちなみにゲームではカメラは中央にいるキャラクターが縦横に移動すると追随するように設定されています。(昔のドラクエの主人公が縦横に1マス動くようなイメージです)
![イメージ説明](295526c7679fd90c75227ab1c7fbd770.jpeg)
カメラのサイズをインスペクターを調整しましたが、bsCameraScriptで設定されているカメラサイズが優先されているようで、ゲーム中は反映されない状態です。
カメラスクリプトの該当していそうな部分を貼らせていただきますので、何卒よろしくお願いいたします。
該当していると思われるスクリプトを貼らせていただきますので、どこを調整すればいいのか教えていただけますでしょうか。何卒よろしくお願いいたします。
![![イメージ説明](701ea52ec02d7b3171edf59c103a8365.jpeg)]
```C#
### 発生している問題・エラーメッセージ
public class bsCameraScript : bsGameObjectScript {
リジェクトの理由としてはiphone専用アプリでもipad上でiphone互換モードで動かないといけない。あなたのアプリは640×960のモードだと画面上下が切れてしまう。とのことです。
### 該当のソースコード
   /// 視野
   // カメラリスト
   private static List<bsCameraScript> CameraList = new List<bsCameraScript>();
   /// <summary>
   /// カメラ数取得
   /// </summary>
   public int width
   public static int CameraCount
   {
       get
       {
           return (int)(GetComponent<Camera>().orthographicSize / ((float)bsWindow.CanvasHeight / 200.0f) * bsWindow.CanvasWidth);
           return CameraList.Count;
       }
   }
     
   /// <summary>
   /// 視野
   /// カメラのスクリプト取得
   /// </summary>
   public int height
   public static bsCameraScript GetCameraScript(int index)
   {
       get
       {
           return (int)(GetComponent<Camera>().orthographicSize / ((float)bsWindow.CanvasHeight / 200.0f) * bsWindow.CanvasHeight);
       }
       return CameraList[index];
   }
   
   public float Zoom
   {
       get
       {
           return (bsWindow.CanvasHeight / 200.0f) / GetComponent<Camera>().orthographicSize;
       }
   }
   
<中略(カメラのスクロール追随設定など)>
   /// <summary>  
   /// カメラサイズ  
   /// </summary>  
   public void SetSize(int cw, int ch, bool isGUI = false)  
   {  
       if (isGUI)  
       {  
           // カメラサイズ設定  
           GetComponent<Camera>().orthographicSize = ch / 200.0f;  
       }  
       else {  
           // カメラサイズ設定  
           GetComponent<Camera>().orthographicSize = ch / 230.0f;  
       }  
         
#if UNITY_ANDROID || UNITY_IPHONE
       float w,h;
       // プレイ中はディスプレイ情報から取得
       if(Application.isPlaying == true || bsWindow.RootScript == null)
       {
           w = (float)Screen.width;
           h = (float)Screen.height;
       }
       // エディター上は設定値から取得
       else
       {
           w = bsWindow.RootScript.WindowWidth;
           h = bsWindow.RootScript.WindowHeight;
       }
       // アスペクト
       float aspect = h / w;
       // 横長の場合
       if(x > y)
       {
           if(w < h*1.5f)
           {
               GetComponent<Camera>().orthographicSize*=(aspect*1.5f);
           }
       }
       else
       {
           if(h >= w*1.5f)
           {
               GetComponent<Camera>().orthographicSize*=(aspect/1.5f);
           }
       }
#endif
   }
   
   void OnDestroy()
   {
       CameraList.Remove(this);
   }
```
   protected override void Awake ()  
   {  
       base.Awake();  
       CameraList.Add(this);  
   }  
 
   protected override void Start()  
   {  
 
   }  
     
   protected override void Update()  
   {  
     
 
   }  
     
   void LateUpdate()  
   {  
       if(Application.isPlaying == true && TargetObject != null)  
       {  
           position = new Vector3(  
               (isScrollX)?(TargetObject.WorldPosition.x + TargetPositionOffset.x):x,  
               (isScrollY)?(TargetObject.WorldPosition.y + TargetPositionOffset.y):y,  
               z  
           );  
             
           // スクロール範囲  
           if(ScrollMaxXFlag == true && x > ScrollMaxX)  
           {  
               x = ScrollMaxX;  
           }  
           else if(ScrollMinXFlag == true && x < ScrollMinX)  
           {  
               x = ScrollMinX;  
           }  
           if(ScrollMaxYFlag == true && y > ScrollMaxY)  
           {  
               y = ScrollMaxY;  
           }  
           else if(ScrollMinYFlag == true && y < ScrollMinY)  
           {  
               y = ScrollMinY;  
           }  
 
       }  
   }  
     
#if UNITY_EDITOR  
   void OnDrawGizmos()  
   {  
     
       Gizmos.color = new Color(1.0f, 0, 1.0f, 1.0f);  
       if(Application.isPlaying)  
       {  
           Gizmos.DrawWireCube(  
               new Vector3(x, -y, z)/100.0f,  
               new Vector3(bsWindow.ScreenWidth, bsWindow.ScreenHeight, 1)/100.0f  
           );  
       }  
       else  
       {  
           Gizmos.DrawWireCube(  
               new Vector3(x, -y, z)/100.0f,  
               new Vector3(bsWindow.RootScript.WindowWidth, bsWindow.RootScript.WindowHeight, 1)/100.0f  
           );  
       }  
   }  
#endif  
}  
 
 
### 試したこと  
 
Unity上でカメラのポジションやサイズなどを調整しましたがうまくいきません。おそらくカメラのスクリプトによって縦横比が設定されているようなのですが、上記スクリプトのどの部分で縦横比の設定をしているのかいまいちわかりません。  
### 補足情報(FW/ツールのバージョンなど)
Unity5.6.6
  • C#

    9684 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る