2016-04-17 6 views
0

Cocos2dx beginner here。 Cocos2dx V3.10の使用。すべての解像度に適合するスプライトの幅cocos2dx

私は多くのチュートリアルやiOS/Androidなどのマルチプラットフォームサポートに関するドキュメントを読んでいます。 setContentScaleFactorとの組み合わせでsetDesignResolutionSizeを使用していますが、これまでのところうまく機能しています。

私はそれにアプローチする最善の方法がわからないという問題が1つあります。

私のゲームは肖像画です。私は特定のスプライトをiphone4sとiphone5で同じ幅にしたいと思います。

どちらも同じデザインの解像度とコンテンツの倍率を使用しますが、iphone4ではスプライトはiphone4(およびiphone5)よりも小さくなります。

私は何を意味するかを実証するために2つの画像を添付しました。 iPhone5のiは解像度の違いにダウンしていると仮定している、あるとして

enter image description here

あなたはスプライトiPhone4の上で見ることができるように

enter image description here

はない全く同じ距離離れたエッジからです。

この解決策のために別のアセットを作成する必要があります。どのように設定するのですか?すべてのヘルプははるかに高く評価

glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::NO_BORDER); 
Size frameSize = glview->getFrameSize(); 

// if the frame's height is larger than the height of medium size. 
if (frameSize.height > mediumResolutionSize.height) 
{ 
    director->setContentScaleFactor(MIN(largeResolutionSize.height/designResolutionSize.height, largeResolutionSize.width/designResolutionSize.width)); 
    searchPaths.push_back("hd"); 
    FileUtils::getInstance()->setSearchPaths(searchPaths); 

} 

:として、現在、iPhone4のとのiPhone5は両方とも同じ規模と設計サイズ、すなわちを使用しています。

答えて

2

これは、使用するデバイスに関係なくゲームが同じに見えるようにすることができます。すべての まず、あなたの資産の全てが理想的にあなたの背景のサイズであるキャンバスサイズを参考に開発されていることを確認してください、あなたのAppDelegate.cppに

/* if (frameSize.height > mediumResolutionSize.height) 
    {   
     director->setContentScaleFactor(MIN(largeResolutionSize.height/designResolutionSize.height, largeResolutionSize.width/designResolutionSize.width)); 
    } 
    // if the frame's height is larger than the height of small size. 
    else if (frameSize.height > smallResolutionSize.height) 
    {   
     director->setContentScaleFactor(MIN(mediumResolutionSize.height/designResolutionSize.height, mediumResolutionSize.width/designResolutionSize.width)); 
    } 
    // if the frame's height is smaller than the height of medium sxize. 
    else 
    {   
     director->setContentScaleFactor(MIN(smallResolutionSize.height/designResolutionSize.height, smallResolutionSize.width/designResolutionSize.width)); 
    } 
*/ 

をすべて以下のコードをコメントアウト。

サイズをcustomWidth x customHeightとしましょう。今

以下のようにAppDelegate.cppで次の行を編集:あなたのゲームは今、すべてのために同じである(限り、アスペクト比が維持されているように、デバイスの同じかかわらずになります

glview->setDesignResolutionSize(customWidth, customHeight, ResolutionPolicy::EXACT_FIT); 
Size frameSize = glview->getFrameSize(); 

をタブレットの場合とは異なります)。

+0

フィードバックをいただきありがとうございます。その方法は私には全く新しいものなので、私はそれに遊びを与えなければなりません。ちょうど私のカスタムサイズが(w)320(h)480と言うならば、私は私の資産をその2倍のサイズでデザインしてから、EXACT_FITポリシーを使うのですか?どのようにタブレットが動作し、iPhoneの画面(すなわち、アンドロイド)とは異なる比率のスクリーンについてはどうでしょうか?多くの感謝 – type25

+0

iOSとアンドロイドを含むすべての電話画面のアスペクト比は〜1.77とほぼ同じであるため、問題は発生しません。 – mohakagr

+0

ありがとうございます。最後の1つは、setContentScaleFactorスケーリングフォントなどのために便利だと思っています....これは今手動で行う必要がありますか? – type25

関連する問題