몇달 이런 저런 일로 많이 바빠서 포스팅을 아주 게을리 했네요..아직 어떤 종류의 기본 게임을 만들지 정하진 못했지만 (슈팅이나..점핑...쉬운걸로..)

그전에 무엇을 개발하든 여기에 필요한 기본 프레임워크 작업을 해두도록 합니다.

 

이전 포스트에 첨부해 드린 framework.zip파일을 압축을 풀고 이미 프로젝트는 생성해 두셨다는 가정하에 아래와 같이 해당 파일들을 끌어다 넣어주세요.

 

그리고 activity_main.xml을 다음과 같이 수정합니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context="com.crazycat.fight.MainActivity">
 
    <org.andengine.opengl.view.RenderSurfaceView
        android:id="@+id/renderview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
 
 
</RelativeLayout>
cs

 

다시 MainActivity.java로 돌아와서 아래와 같이 변경후 오버라이드합니다.

1
2
extends AppCompatActivity ---> extends BearBeanActivity 
 
cs

 

 

그리고 아래 그림과 같이 앱제작에 쓰이는 각종 리소스들을 담을 폴더를 만들어 둡니다.

 

1
2
3
4
main > assets > ---gfx  <----------각종 이미지들을 넣는 곳
                |- mfx  <----------사운드파일을 넣어두는 곳
                |- font <----------폰트를 넣어두는 곳
 
cs

 

이제 MainActivity를 아래와 같이 채워 나가봅니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
public class MainActivity extends BearBeanActivity {
 
    //카메라 설정
    private int CAMERA_WIDTH = 800;
    private int CAMERA_HEIGHT = 480;
 
   /* @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    } */ //<--------------------------광고달기 전에는 쓸일 없으니 일단 주석처리해 둡니다.
 
    @Override
    public EngineOptions onCreateEngineOptions() {
 
        final BoundCamera camera = new BoundCamera(00, CAMERA_WIDTH, CAMERA_HEIGHT);
        final FixedStepEngine engine = new FixedStepEngine(new EngineOptions(true,
                ScreenOrientation.LANDSCAPE_FIXED, new FillResolutionPolicy(), camera),60);
 
        engine.getEngineOptions().getAudioOptions().setNeedsSound(true).setNeedsMusic(true);
        engine.getEngineOptions().setWakeLockOptions(WakeLockOptions.SCREEN_ON);
        engine.getEngineOptions().getTouchOptions().setNeedsMultiTouch(true);
        engine.getEngineOptions().getRenderOptions().setDithering(true);
 
        return engine.getEngineOptions();
    }
 
    @Override
    protected Scene onCreateScene() {
 
        //사운드파일의 저장장소지정
        SoundFactory.setAssetBasePath("mfx/");
        MusicFactory.setAssetBasePath("mfx/");
 

//본격적인 작업이 진행될 Scene클래스 "GameScene"을 만듭니다.

//아직 만들어 지지 않았기에 빨간부분에서 Alt + Enter를 눌려 GameScene클래스를 만들도록 합니다. 

        GameScene gameScene = new GameScene(this,getEngine().getCamera());
 
        getSceneArray().add(gameScene);
 
        return gameScene;
 
 
    }
 
    @Override
    protected int getLayoutID() {
 
        return R.layout.activity_main;
    }
 
    @Override
    protected int getRenderSurfaceViewID() {
 
        return R.id.renderview;
    }
 
    @Override
    public void appendScene(ActivationScene scene) {
 
    }
 
    @Override
    public void backToInitial() {
 
    }
 
    @Override
    public void refreshRunningScene(ActivationScene scene) {
 
    }
 
    @Override
    public void getSystemService() {
 
    }
cs

 

 

[GameScene.java]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class GameScene extends ActivationScene {
 
    private HUD hud;
 
    public GameScene(BearBeanActivity baseActivity, Camera camera) {
        super(baseActivity);
        this.camera = (BoundCamera) camera;
        init();
    }
 
    @Override
    public void init() {
 
        hud = new HUD();
        //Camera 오른쪽상단 고정
        camera.setHUD(hud);
        camera.setBounds(0f, 0f, 800f, 480f);
        camera.setBoundsEnabled(true);
        setBackground(new Background(Color.CYAN));
  
    }
 
     
    @Override
    public void prepareSoundAndMusic() {
 
    }
 
    @Override
    public boolean dispatchKeyEvent(KeyEvent e) {
        return false;
    }
}
 
cs

 

일단 여기까지 기본 작업은 완료되었습니다. 다소 앞서나간 코드들이 있는데 예를 들자면 카메라 설정 부분인데, 이 부분은 나중에 플레이어 이동에 따른 시점이동을 하기 위해 처음부터 바운드카메라를 미리 설정한 것입니다. 포스팅 진행과정에서 불필요하다 싶으면 가장 베이직으로 변경할 예정입니다.

 

다음 포스팅에서는 플레이어를 등장시켜 기본적인 움직임을 제어하는 법을 알아보도록 하겠습니다.

'andEngine for AndroidStudio' 카테고리의 다른 글

튜토리얼02- 캐릭터를 넣어보자  (3) 2016.05.17
Scene간 이동하는 일반적인 방법  (1) 2016.04.24
시작하기 전에..  (0) 2015.12.16
Posted by BeansLove
,

 

앱의 일반적인 구성은 타이틀화면이 나오고 터치를 하면 게임화면 또는 상점, 기타 화면으로 이동하게 됩니다.

이번에는 이러한 Scene의 이동법을 간단하게 알아봅니다.

버튼을 설치하고 그 버튼을 터치하는 방식, 버튼없이 그냥 화면의 아무곳이나 터치하는 방식이 일반적이라 할 수 있습니다.

이 두가지 방식을 아주 간단하게 만들어 보도록 하겠습니다.

먼저, MainActivity에서 타이틀씬클래스(InitialScene.java)를 작성합니다.

 

 

 

 

그리고 BearBeanActivity.java를 열고 아래 그림과 같이 추가해 주세요.

이렇게 하는 이유는 물론 InitialScene.java에서 바로 이동시키는 코드를 작성해도 되지만 향후 Scene이 늘어날 경우를 생각해서 효율적으로 관리를 하기 위해 전 이렇게 합니다.

 

 

 

그리고 MainActivity.java를 보시면 에러표시가 뜰거에요..그럼, 다시 Alt-Enter를 누르시면  아래와 같이 오버라이드가 되며 그 안에 아래 그림과 같이 작성하시면 됩니다.

 

 

즉, InitialScene(타이틀화면)에서 PlayScene(게임화면)으로 이동시키는 것입니다.

이동방식 1. 버튼스프라이트를 이용한 이동

동일한 크기의 2개의 버튼이미지를 준비합니다.

 

 이동방식 2. 화면 아무곳이나 터치하면 이동되는 방식

 

'andEngine for AndroidStudio' 카테고리의 다른 글

튜토리얼02- 캐릭터를 넣어보자  (3) 2016.05.17
튜토리얼01- 기본 뼈대 만들기  (0) 2016.05.16
시작하기 전에..  (0) 2015.12.16
Posted by BeansLove
,

Google Badge

카테고리 없음 2016. 3. 17. 23:43

 

 

Posted by BeansLove
,