Cocos2d-X에서 게임 화면 180도로 회전하게 만들기.

2012. 7. 18. 21:34프로그래밍/Cocos2dX

728x90
반응형

게임을 만들다 보면 180도로 단말기를 회전할때마다 그에 따라서 화면도 회전이 되어야 합니다.

개인적으로 필요성은 못느끼곤합니다. 왜 이렇게 회전을 해야 하는 것일까...? 

하지만 때로는 편리할때도 있습니다.


안드로이드 에서 [android:screenOrientation="sensor"]를 사용하면 단말기를 어느 방향으로 회전을 하든간에 게임화면이 회전됩니다. 하지만 단점으로는 landscape용 게임을 세로로 단말기를 들게되면 화면이 짤리는 현상이 발생됩니다.

따라서 우리가 필요로 하는 방식은 wide로만 상하로 180도만 회전하도록 하는 것이 필요합니다. 즉 매 90도마다 회전되는 것은 필요치 안습니다.


다음과 같이 설정하면 2.2미만은 Landscape로 화면이 고정이되고 2.3부터는 180도로 회전이 적용됩니다.

안드로이드 버전 2.3부터만 지원한다고 하면 android:screenOrientation="sensorLandscape"를 사용하면 됩니다.


AndroidManifest.xml 파일의 경우 다음과 같이 수정하면 됩니다.

        <activity android:name=".SWAT"

                  android:label="@string/app_name"

                  android:screenOrientation="landscape"

                  android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

                  android:configChanges="keyboardHidden|orientation">

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>



그리고 Java 소스에서는 다음과 같이 추가해주면 됩니다.

메인 클래스에서 protected void onCreate(Bundle savedInstanceState)함수에 추가했습니다.

public static final int ANDROID_BUILD_GINGERBREAD = 9;

public static final int SCREEN_ORIENTATION_SENSOR_LANDSCAPE = 6;



        if (Build.VERSION.SDK_INT >= ANDROID_BUILD_GINGERBREAD) {

            setRequestedOrientation(SCREEN_ORIENTATION_SENSOR_LANDSCAPE);

        }


찾아보니 SCREEN_ORIENTATION_SENSOR_LANDSCAPE를 2.3부터 지원하더군요. 그래도 요즘 대부분의 고사양 스마트폰에서는 2.3정도는 지원하니 특별히 문제는 없을 듯 합니다.


구글 Play의 캐쥬얼 게임의 상위 OS버전입니다. 

캐쥬얼만이 아닌 대부분의 카테고리들에서 비슷하게 통계가 잡히는 것 같습니다.

앱 개발에 조금이라도 도움되시기 바랍니다.


728x90
반응형