'COCOS2D-X'에 해당되는 글 10건

  1. 2014.01.09 [Coordinate System] cocos2d-x 좌표 시스템
  2. 2014.01.09 cocos2d-x v3.0 Beta 출시 되었습니다.
  3. 2014.01.08 [디자인패턴] cocos2d-x 싱글톤 싱글턴 패턴 구현
  4. 2014.01.08 [Action] cocos2d-x 액션 사용법
  5. 2013.09.22 챕터 6 - 씬을 전환하는 방법 (1)
  6. 2013.09.22 챕터 5 - 음악 재생 및 이펙트 효과음 재생 하는 법
  7. 2013.09.22 챕터 4 - 충돌 체크하는 법
  8. 2013.09.21 Tutorial - cocos2d-x 로 간단한 게임 만들기
  9. 2013.09.20 cocos2d-x 기본 세팅 - 3
  10. 2013.09.19 cocos2d-x 기본 세팅 - 1

[Coordinate System] cocos2d-x 좌표 시스템

|

좌표 시스템

기존과 다른 좌표 시스템을 도입.Introduction of Different Coordinate Systems


직교 좌표 시스템(데카르트 좌표)

너는 아마 기하학 수업에 사용되는 좌표를 알고 있을 것이다.

모바일에서는 보통 3가지 정도의 좌표 시스템이 있다.

UI 좌표 시스템

안드로이드나 아이폰에서의 좌표 시스템

  • 좌측 상단이 (0,0) 이다.
  • X 축은 왼쪽에서부터 오른쪽으로 갈수록 증가한다.
  • Y 축은 화면 상단에서 부터 아래로 내려 갈수록 증가한다.

looks like this

Direct3D 좌표 시스템

DirectX 에서는 왼손좌표계를 사용한다.


OpenGL 그리고 Cocos2d 의 좌표시스템

openGL과 cocos2d는 오른손 좌표계를 사용한다.


우리는 2d게임에서 오직 x,y축만 사용합니다. 

  • 좌측 하단이 (0,0) 좌표이고 오른손 좌표계를 사용합니다.
  • X 축은 왼쪽에서부터 오른쪽으로 갈수록 증가합니다.;
  • Y 축은 아래부터 시작하며 위로 갈수록 증가합니다.

좌표 시스템을 좀더 이해하기 쉽도록 아래 사진이 준비되어있음

다이렉트x나 일반적 ui시스템과 다른 좌표시스템이다.


Parent and Childrens

CCNode를 상속받는 모든 클래스는 anchorPoint 속성을 가지고 있습니다.

CCNode를 상속받는 객체를 그릴때(sprite, layer, 기타등등) , cocos2d-x는 anchorpoint와 position를 결합합니다. 또한 물체를 회전할때 Anchorpoint를 기준으로 회전하게됩니다.

우리는 회색배경의 부모 클래스를 만들었고 파란색 배경의 자식클래스를 만들었습니다. 부모의 좌표는((100,100)이고 자식의  anchor point는 중앙입니다.

 1    CCSprite* parent = CCSprite::create("parent.png");
 2    parent->setAnchorPoint(ccp(0, 0));// Anchor Point
 3    parent->setPosition(ccp(100, 100));
 4    parent->setAnchorPoint(ccp(0, 0));
 5    addChild(parent);
 6
 7    //create child 
 8    CCSprite* child = CCSprite::create("child.png");
 9    child->setAnchorPoint(ccp(0.5, 0.5));
10    child->setPosition(ccp(0, 0));
11    parent->addChild(child);//add child sprite into parent sprite.


자식의 위치가 (0,0) 이고 부모의 위치가 (100,100)일때 아래 그림과 같다.

Anchor Point

앵커 포인트의 위치와 개체를 회전 모두에 사용됩니다.앵커 포인트의 좌표는 일반적으로 개체 내 지점에 해당하는 상대 좌표입니다. 예를 들어, 앵커 포인트 CCP (0.5, 0.5)는 객체의 중심에 대응한다.물체의 위치를 설정할 때, 객체는 앵커 포인트로 setPosition () 호출에 지정된 좌표에있을 것이다되도록 위치된다.객체를 회전시킬 때 마찬가지로, 그 기준점에 대해 회전된다.

예를 들어 sprite가 앵커포인트 와 위치가 0,0일때

그 결과 sprite는 하단 왼쪽 모서리에 배치됩니다.

1// create sprite
2CCSprite* sprite = CCSprite::create("bottomleft.png");
3sprite->setAnchorPoint(ccp(0, 0));// Anchor Point
4sprite->setPosition(ccp(0,0));
5addChild(sprite);


예를 들어 sprite가 앵커포인트는 (0.5,0.5) 이고 위치가 0,0일때

1// create sprite
2CCSprite* sprite = CCSprite::create("center.png");
3sprite->setAnchorPoint(ccp(0.5, 0.5));// Anchor Point
4sprite->setPosition(ccp(0,0));
5addChild(sprite);


위와 같이 sprite의 중심이 좌표 0,0에 위치합니다. 앵커포인트는 화소값이 아닌 노드에 상대적인 크기입니다. 0~1 까지 존재함.

getVisibleSize, getVisibleOrigin vs getWinSize

VisibleSize 은 OpenGL상에서 보여지는 크기를 리턴합니다.이 값은  CCEGLView::setDesignResolutionSize()이 함수를 호출하지 않으면 getWinSize와 같습니다.

getVisibleOrigin은 OpenGL상에서 보이는 x,y의 좌표를 반환합니다.


How to convert co-ordinates

convertToNodeSpace:

convertToNodeSpace will be used in, 예를 들어 타일 기반 게임에서, 너가 큰 맵을 가지고 있을때. convertToNodeSpace는 너의 OpenGL 터치 좌표를 큰맵에 있는 좌표계를 기준으로 변형해줍니다.

Example:

다음그림은 보여줍니다. node1의 앵커포인트(0,0)이고 node2의 앵커포인트(1,1)입니다.

우리가  호출하면CCPoint point = node1->convertToNodeSpace(node2->getPosition()); convert node2의 스크린 좌표계는 node1의 좌표계를 기준으로 구해지게 되며 그 결과 node2 의 좌표는 (-25,-60) 이 됩니다.

convertToWorldSpace:

convertToWorldSpace(const CCPoint& nodePoint) coordinates.convertToWorldSpace 항상 우리의 스프라이트의 화면 위치를 반환합니다 당신은 당신의 스프라이트에 탭을 캡처 할하지만 레이어를 확장 / 이동해야하는 경우 매우 유용 할 수 있습니다 화면에 노드 좌표입니다 변환합니다.


일반적으로, 자식 노드의 위치와 부모 노드 호출이 방법은 결과로 아이의 세계의받은 위치를 반환합니다. 호출자가 부모가 아닌 경우이 메서드를 호출 아무 의미도하지 않습니다 것 같다 ...

Example:

1CCPoint point = node1->convertToWorldSpace(node2->getPosition()); 

위의 코드는 화면의 좌표로 노드 2의 좌표를 변환합니다.

예를 들어, 노드 1의 앵커 위치 (0, 0)이 화면에 필요없는 노드 1의 왼쪽 하단 모서리, 그러나되는 경우. 이 화면에 점의 (-5, -20) 좌표 노드 1에 대해 (이 경우)가 (15, 20입니다) (-20, -5)는 노드 2의 위치를 ​​변환합니다.결과는 다음 그림에서 보여줍니다

convertToWorldSpaceAR,

convertToWorldSpaceAR 지점을 고정하는 relatevely 위치를 반환합니다, 그래서 우리의 장면 경우 - 루트 층은 CCP의 앵커 포인트 (0.5F, 0.5F)이 - 기본, convertToWorldSpaceAR은 상대적으로 화면 중앙에 위치를 반환해야합니다.

convertToNodeSpaceAR -. convertToWorldSpaceAR와 동일한 논리

Sample code:

 1
 2CCSprite *sprite1 = CCSprite::create("CloseNormal.png");
 3
 4sprite1->setPosition(ccp(20,40));
 5
 6sprite1->setAnchorPoint(ccp(0,0));
 7
 8this->addChild(sprite1);
 9
10CCSprite *sprite2 = CCSprite::create("CloseNormal.png");
11
12sprite2->setPosition(ccp(-5,-20));
13
14sprite2->setAnchorPoint(ccp(1,1));
15
16this->addChild(sprite2);
17
18CCPoint point1 = sprite1->convertToNodeSpace(sprite2->getPosition());
19
20CCPoint point2 = sprite1->convertToWorldSpace(sprite2->getPosition());
21
22CCPoint point3 = sprite1->convertToNodeSpaceAR(sprite2->getPosition());
23
24CCPoint point4 = sprite1->convertToWorldSpaceAR(sprite2->getPosition());
25
26CCLog("position = (%f,%f)",point1.x,point1.y);
27
28CCLog("position = (%f,%f)",point2.x,point2.y);
29
30CCLog("position = (%f,%f)",point3.x,point3.y);
31
32CCLog("position = (%f,%f)",point4.x,point4.y);
33

Result:

 1
 2position = (-25.000000,-60.000000)
 3
 4position = (15.000000,20.000000)
 5
 6position = (-25.000000,-60.000000)
 7
 8position = (15.000000,20.000000)
 9



Trackback 0 And Comment 0

cocos2d-x v3.0 Beta 출시 되었습니다.

|

cocos2d-x v3.0 Beta


Highlights

  • New renderer. Renderer has being decoupled from the Scene Graph. It supports auto-batching and auto-culling.
  • Added template containers. cocos2d::Map<>cocos2d::Vector<>
  • Label supports: shadow, glow and outline (beta)
  • Added Joint support in the physics subsystem
  • Added Console: A simple TCP console that lets you debug and inspect your game remotely
  • tools/project_creator/project_creator.py includes a GUI to simplify the game creation process. It also allows you to create the game in any given directory.
  • Added support to build Android's APK files in the android-build.py script
  • Added Scheduler::performFunctionInCocosThread(). It supports executing a function in the cocos2d thread
  • Director emits the following events using the EventDispatcherAFTER_UPDATEAFTER_DRAW,AFTER_VISIT and PROJECTION_CHANGED
  • Added Cocos2dxActivity.java which inherits from native activity. Ingetrating 3rd Android SDK would be much easilier on v3.0.

Read more about all the new features at cocos2d-x v3.0 release notes


알파에서 베타버전으로 출시되이써습니다.

정식버전이 기대됩니다.

'잡다한것들전부 > 소식' 카테고리의 다른 글

cocos2d-x v3.0 Beta 출시 되었습니다.  (0) 2014.01.09
Trackback 0 And Comment 0

[디자인패턴] cocos2d-x 싱글톤 싱글턴 패턴 구현

|


#ifndef __SINGLETON_H__

#define __SINGLETON_H__

 

#include "cocos2d.h"

 

class SingletonClass{

private:

                  static SingletonClass * instance ;

                  ~SingletonClass(){/*empty*/};

                  SingletonClass(){

                                   value = 10;};

public:

                  static SingletonClass * getInstance();

                  static void releaseInstance();

 

                  int value;

                 

};

#endif

 

 

#include "Singleton.h"

 

SingletonClass * SingletonClass::instance = NULL ;

 

SingletonClass * SingletonClass::getInstance()

{

                  if (!instance)

                  {

                                   instance = new SingletonClass();

                  }

 

                 return instance;

}

 

void SingletonClass::releaseInstance()

{

                  if(instance) delete instance;

}

 



사용법

#include "Singleton.h"

CCLOG("VALUE %d", SingletonClass::getInstance()->value);

이런식으로 접근가능


Trackback 0 And Comment 0

[Action] cocos2d-x 액션 사용법

|


Actions



Actions 클래스는 CCNode 를 상속받는 모든 객체에 명령을 부여합니다. 액션은  오브젝트의 위치, 회전, 크기 기타등등 값들을 수정합니다

일정기간동안 수정하는 작업이면 -> CCIntervalAction actions 그렇지 않으면 -> CCInstantAction 입니다.

 예를들면 CCMoveBy는 일정기간동안 수정합니다. CCIntervalAction 액션입니다.

액션의 사용 예:

1// 스프라이트가 오른족으로  50 픽셀, 밑으로 10 픽셀 움직임 2초동안.
2CCActionInterval*  actionBy = CCMoveBy::create(2, ccp(50,10));


가속 관련된 액션들 (점점 빨라지거나 느려지는등)

  • CCEaseIn
  • CCEaseOut
  • CCEaseInOut
  • CCSpeed
    Etc. (See the ActionsEaseTest.cpp example for more info)

CCActionManager를 사용하면 중간에 액션을 일시정지 하고 재시작 할수도있다.(해당객체의)

1// Pause actions
2CCDirector *director = CCDirector::sharedDirector();
3m_pPausedTargets = director->getActionManager()->pauseAllRunningActions();
4// resume actions
5CCDirector *director = CCDirector::sharedDirector();
6director->getActionManager()->resumeTargets(m_pPausedTargets);

Basic Actions

Basic actions are the ones that modify basic properties like:

Position(위치수정관련)

CCMoveBy
CCMoveTo
CCJumpBy
CCJumpTo
CCBezierBy
CCBezierTo
CCPlace

Scale(크기수정관련)

CCScaleBy
CCScaleTo

Rotation(회전)

CCRotateBy
CCRotateTo

Visibility(보이는거)

CCShow
CCHide
CCBlink
CCToggleVisibility

Opacity(알파값)

CCFadeIn
CCFadeOut
CCFadeTo

Color(색깔)

CCTintBy
CCTintTo

Example:

1CCSprite *sprite = CCSprite::create("Images/grossini.png");
2sprite->setPosition(ccp(100, 100));
3addChild(sprite);
4
5CCMoveBy* act1 = CCMoveBy::create(0.5, ccp(100, 0));
6sprite->runAction(CCRepeat::create(act1, 1));

The act1 will be a CCMoveBy action of duration 0.5, but with the position value of ccp(100,0).


 뒤에 By 붙는거와 To 붙는거 차이


By는 현재 값 기준으로 변경 To는 그냥 그런거 상관없이 변경

만약 현재 캐릭터 위치가 120 .30 이면

만약 CCMoveBy::create(2, ccp(50,10));    //현재 캐릭터 위치 기준으로 50,10만큼 이동 -> 170,40

       CCMoveTo::create(2ccp(50,10));      //좌표값에 50, 10으로 이동 -> 50,10


Trackback 0 And Comment 0

챕터 6 - 씬을 전환하는 방법

|

SimpleGame은 기초적인것은 완성되었습니다. 우리는 좀 더 전문적인 게임을 만들기 위해서 몇가지 기능을 더 추가할 생각입니다.

이번 챕터에서는 우리는 새로운 씬을 추가할것입니다. 적들을 일정 개수만큼 없애면 "You Win!" 그렇지 못하면 "You lose"화면이 출력됩니다.

GameOverScene.cpp 와 GameOverScene.h 파일을 만듭니다.

 

 

 

 GameOverScene 파일을 만들면 아래와같이 생성되는데 이 두개의 파일을 Classes 폴더 하위에 옮깁니다.

먼저 두개의 파일을 선택하고 del 키를 누르거나 오른쪽 - 삭제 메뉴를 클릭합니다.

 

 

 

 이렇게 제거를 하고 난 다음에 실제로 존재하는 파일위치를 변경합니다,

클래스를 생성하면 proj.win32 폴더에 파일이 생성되는데 이파일을 Classes 폴더에 옮깁니다.

예) C:\Android\cocos2d-x\cocos2d-x-2.1.5\projects\SimpleGame\proj.win32

     C:\Android\cocos2d-x\cocos2d-x-2.1.5\projects\SimpleGame\Classes

visual studio 의 폴더와 실제 폴더 위치를 동일하게 해줘야 나중에 문제가 생기지 않습니다

 

 

 

 

 

이렇게 파일의 위치를 옮기고 Class폴더에서 오른쪽 버튼 - 추가 - 기존항목을 눌러 cpp와 h를 추가하거나 폴더에서 드래그앤 드롭으로 추가합니다.

파일의 위치를 수정하고 GameOverScene.h와 GameOverScene.cpp를 아래와 같이 수정합니다

팁:

1. 클래스 멤버 함수는 .m 파일에서는 h파일에 선언없이 사용할수 있지만 c++에서는 무조건 선언해줘야된다.

2. 함수 create() (2.0 이전 버전에서는 node()) 는 c++에서는 self 라는 키워드가 없습니다.

CREATE_FUNC는 더 쉽게 create()함수를 생성하게 도와주는 매크로 입니다.

두매크로를 사용하기 위해서는 init()를 구현해야됩니다.

3. cocos2d-x에서는 안드로이드 sdk 에서는 try catch를 지원하지 않기 때문에 초기화를

생성자에서 한번 init에서 한번 촉화 합니다

4. setter 및 getter _lable와 _layer는 다양한 매크로로 구현할수 있으며,

위 코드에서 CC_SYNTHESIZE_READONLY 는 getter 만 구현 합니다.

GameOverScene.cpp 코드

GameOverScene.cpp 에서는 하나의 scene 과 하나의 layer 로 구현된다. 하나의 신은 여러 layer 포함할수 있습니다.하나의 레이어의 중앙에 "You Win!" 혹은 "You Lose!"를 출력합니다.

1. GameOverLayer _label 과 GameOverScene _layer 은 선언되었고, init에서 retain을 해주고 소멸자에서 release를 해줘야 됩니다.

2. NSAutoReleasePool 은 cocos2d-x 에서도 존재합니다.

우리는 두가지 경우에 release()를 호출합니다.

  • 개체에 new 로 선언했을때 예를 들어 CCSprite * sprite = new CCSprite();
  • 개체가 static 함수에 의해서 만들어질때 예를 들어 CCSprite * sprite = CCSprite::create(); 에는 필요하지 않지만 sprite->retain()을 호출하면 sprite->release()를 호출해야 됩니다.

 

우리는 HelloWorldScene 다음 변수를 추가해야 됩니다.(얼마나 많은 적을 죽였는지 카운팅 해주는 변수)

int _projectilesDestroyed;

HellWorld::HelloWorld() 에서 초기화 시켜줍니다.

HelloWorld::HelloWorld()

        :_targets(NULL),

        _projectiles(NULL),

        _projectilesDestroyed(0)

{

}

GameOverScene.h 를 HelloWorldScene.cpp 에 include 를 해줍니다.

#include "GameOverScene.h"

 

이길때 처리

HelloWorld::update() 함수의 TargetsToDelete 루프에 다음 코드를추가합니다.

        //충돌한 적에 대한 처리

        CCARRAY_FOREACH(targetsToDelete, jt)

        {

               CCSprite * target = dynamic_cast<CCSprite *>(jt);

               _targets->removeObject(target);

               this->removeChild(target, true);

              

               _projectilesDestroyed++;

               if(_projectilesDestroyed >= 5){

                       GameOverScene * gameOverScene = GameOverScene::create();

                       gameOverScene->getLayer()->getLabel()->setString("You win!");

                       CCDirector::sharedDirector()->replaceScene(gameOverScene);

               }

 

        }

질때 처리

HelloWorld::spriteMoveFinished에 다음 코드를 추가합니다.

//배열에 집어넣었던 or 표창을 배열에서 제거한다.

        if(sprite->getTag() == 1) //

        {

               _targets->removeObject(sprite);

 

               //적이 하나라도 화면을 벗어나면 게임에서 진다.

               GameOverScene * gameOverScene = GameOverScene::create();

               gameOverScene->getLayer()->getLabel()->setString("You Lose :[");

               CCDirector::sharedDirector()->replaceScene(gameOverScene);

        }

 

 

모든 준비가 끝났습니다. 컴파일을하고 실행을 합시다.

적. 표창 ,배경음악, 승리화면 등 모두 완성 했습니다.

 

 

Trackback 0 And Comment 1
  1. 감사합니다 2013.10.06 00:04 address edit & del reply

    많은 도움이 됐습니다!!

    튜토리얼 한번 따라하기 무지 힘드네요..

    무슨 셋팅이 저리도 복잡한지.. ㅠㅠㅠ

챕터 5 - 음악 재생 및 이펙트 효과음 재생 하는 법

|

이번 챕터에서는 우리는 배경음악 및 게임내 효과음을 재생하는 방법을 배울것입니다.

약간의 코드만을 추가하는것만으로도 쉽게 음악을 재생할수있습니다.

cocos2d-x 에서는 SimpleAudioEngine가 존재합니다.

먼저 첨부파일 2개를 다운받으시고 Resources 폴더에 집어넣으세요

 

5.zip

HelloWorldScene.cpp의 상단에 SimpleaudioEngine.h 를 include 시켜줍니다.

#include "SimpleAudioEngine.h"

배경음악을 재생시켜주는 것을 HelloWorld::init() 메서드 에 집어넣어줍니다.

(편의상 맨 아래 코드에 집어넣었습니다.) 

CocosDenshion::SimpleAudioEngine::sharedEngine()->playBackgroundMusic(

               "background-music-aac.wav",true);

 

그리고 화면을 터치시 발생되는 이펙트는 ccTouchesEnded()에 집어넣어줍니다.(편의상 맨 아래에 집어넣었습니다.)

CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("pew-pew-lei.wav");

 

컴파일하고 실행을 하면 소리가 재생될것입니다.

 

 

Trackback 0 And Comment 0

챕터 4 - 충돌 체크하는 법

|

주인공은 표창을 발사한다 하지만 적들은 죽지않는다

이번 챕터에서는 표창과 적들의 충돌체크 방법을 소개한다.

게임에서 우리는 sprite에 태그를 붙인다 적 = tag 1 , 표창 = tag 2로

CCSprite는 CCNode를 상속받는데 CCNode에는 m_nTag라는 변수값이 있고 이 값

은 setTag() 및 getTag()로 접근할수 있다 우리는 이 Tag값을 이용해서 두가지

sprite를 구별한다.

먼저 HelloWorldScene.h 에 아래 코드를 추가한다.

생성자 및 소멸자도 추가한다.

이 코드는 적과 표창을 저장할수 있는 배열이다. (CCArray)

HelloWorld();

~HelloWorld();

protected:

        cocos2d::CCArray * _targets;

        cocos2d::CCArray * _projectiles;

               

HelloWorldScene.cpp 에서는 두개의 CCArray 을 메모리 할당하고 (HelloWorld::init() 메서드)

생성자에서는 변수를 초기화 하는 코드를

소멸자에서는 메모리를 해제하는 코드를 추가한다.

 addTarget() 함수를 수정하자.

target 에 태그를 붙이고(1번 태그), _targets 배열에 새롭게 만들어진 target 을 집어넣는 코드 

addTarget 함수 맨마지막에 집어넣자.

//targets 배열에 집어넣기

target->setTag(1);

_targets->addObject(target);

CccTouchesEnded() 함수를 수정하자.

_projectile 태그를 붙이고(2번태그) _projectiles 배열에 새롭게 만들어진 projectile 을 집어넣는 코드

//표창을 배열에 집어넣기

projectile->setTag(2);

_projectiles->addObject(projectile);

그리고 spriteMoveFinished 함수를 아래와 같이 변경한다.

void HelloWorld::spriteMoveFinished(CCNode * sender)

{

        CCSprite * sprite = (CCSprite *) sender;

        this->removeChild(sprite);

 

        //배열에 집어넣었던 or 표창을 배열에서 제거한다.

        if(sprite->getTag() == 1) //

        {

               _targets->removeObject(sprite);

        }

        else if(sprite->getTag() == 2)//표창

        {

               _projectiles->removeObject(sprite);

        }

 

}

update() 함수에서는 매 프레임 마다 충돌을 가지하고 충돌이 된 적이나 표창은 제거한다.

HelloWorldScene.h 에는 void update(float dt)를 선언하고

HelloWorldScene.cpp 에는 아래와 같이 정의하자

이렇게 정의한후 update() 함수를 매 프레임마다 블러주는 schedule 을 선언하자.

HelloWorld::init() 맨 아래에 선언해주자(return true 바로 위)

this->schedule(schedule_selector(HelloWorld::update));

컴파일을 하고 난후면 표창을 던지면 적이 죽는 모습을 볼수 있을 것이다.

 

Trackback 0 And Comment 0

Tutorial - cocos2d-x 로 간단한 게임 만들기

|

http://www.cocos2d-x.org/

에 있는 간단한 게임 만들기를 한글로 번역해서 올릴 생각입니다.

정말 기초 게임이니 초보자들만 보시길 추천해드립니다.

Trackback 0 And Comment 0

cocos2d-x 기본 세팅 - 3

|

새로운 프로젝트 생성

cocos2d-x 2.1.4 버전 이후로는 install-templates-msvc.bat 파일이 제거되고

tools/project-creator 파일을 실행시켜야된다. 이 파일을 실행시키기 위해선

python을 설치 해야된다. cocos2d-x에서는 파이썬 2.7.2 버전을 다운받기를 권장하고 있다.

http://www.python.org/download/releases/2.7.2/

위 링크로 가서 자신의 os에 맞는 프로그램을 설치한다.

 

 

 

 설치가 완료되면 path를 수정한다.

파이썬이 설치된 경로 추가

예) ;C:\Python27;

앞뒤로 세미콜론(;)은 반드시 붙여주자

 

환경변수 설정이 완료되면 윈도우 + r 키를 누르고 cmd 창을 실행시키고

python --version 을 입력해서 python 버전이 제대로 출력되면 설치가 완료 된것이다.

 

 


 

프로젝트 생성

C:\Android\cocos2d-x\cocos2d-x-2.1.5\tools\project-creator

create_project.py로 통합프로젝트를 만들수있다.

cmd 창을 열자. cocos2d-x 가 설치된 경로로 이동한다.

명령어

cd C:\Android\cocos2d-x\cocos2d-x-2.1.5\tools\project-creator 로 이동

python 으로 create_project.py파일을 실행하면 친절하게 만들때 어떤식으로 만들지 설명이

나온다.

sample1과 sample2 에 있는거 대로 실행을 해보자.

Sample 1: ./create_project.py -project MyGame -package com.MyCompany.AwesomeGame

Sample 2: ./create_project.py -project MyGame -package com.MyCompany.AwesomeGame
 -language javascript

python create_project.py create_project.py -project MyGame -package com.MyCompany.AwesomeGame -language cpp 입력

 

Have fun! 이란 글자가 나오면 정상적으로 프로젝트가 생성된 것입니다.

C:\Android\cocos2d-x\cocos2d-x-2.1.5\projects

파일에 프로젝트가 생성됩니다.

C:\Android\cocos2d-x\cocos2d-x-2.1.5\projects\MyGame\proj.win32로 들어가시면 솔루션 파일이 있습니다. 실행하시면 visual Studio 에서 실행 가능합니다.

 

 

 ctrl + F5로 빌드한 모습

 

 

'잡다한것들전부 > 세팅2' 카테고리의 다른 글

cocos2d-x 기본 세팅 - 4  (2) 2013.09.21
cocos2d-x 기본 세팅 - 3  (0) 2013.09.20
cocos2d-x 기본 세팅 - 2  (0) 2013.09.19
cocos2d-x 기본 세팅 - 1  (0) 2013.09.19
Trackback 0 And Comment 0

cocos2d-x 기본 세팅 - 1

|

cocos2d-x 기본 세팅 Android

windows 8

visual studio 2012

cocos2d-x 2.1.5 버전 기준

1. java 설치

2. android sdk 설치

3. cgwin 설치

4. android ndk 설치

5. 이클립스 adt 설치

 

.여러가지 파일들을 설치해야 되므로 폴더를 설정해서 각 파일들을 다운받자.

현재 저는 C:\Android 여기에 모든 파일들을 다운받았다.

예)

안드로이드 sdk

C:\Android\ndk 

안드로이드 ndk

C:\Android\sdk

cgwin

C:\Android\cgwin

cocos2d-x

C:\Android\cocos2d-x


cocos2d-x 로 게임을 개발하기 위한 기본세팅

cocos2d-x 는 visual studio 로 개발을 해서 안드로이드 ndk 로 빌드를 할수있다.

android로 변환하기 위해서는 android sdk, ndk 가 필요하고 android sdk 는 java를 필요로

한다.

java 설치 및 환경변수 설정

http://www.oracle.com/technetwork/java/javase/downloads/index.html

위 링크를 클릭해서 java jdk 최신버전을 받자.

링크를 받고 설치를 한후 환경변수를 설정하자

내컴퓨터 -> 속성 -> 고급 -> 환경변수 -> 시스템 변수

 

 

1. JAVA_HOME 새로만들기 
      변수이름 : JAVA_HOME
      변수값 : 자바 jdk 를 설치한 위치                           

예) C:\Program Files\Java\jdk1.7.0_40

2. PATH 수정

기존에있는 PATH에서 설정을 해준다.

%JAVA_HOME%\bin; 추가

모든 경로는 세미콜론으로 구별한다

path 를 설정하고 윈도우 + r 키를 누르고 실행창에 cmd를 입력하고 엔터친다.

cmd 창이 뜨면 javac를 입력하고

 

이런창이 뜨면 제대로 환경변수 설정이 제대로 된것이다.

 


 

Android sdk 설치

http://developer.android.com/sdk/index.html

위 링크를 클릭해서 sdk 를 설치한다.

언제부터인지 몰라도 이제 안드로이드 sdk 를 받으면 이클립스를 기본으로 내장하고 있다.

C:\Android\sdk에 압축파일을 받고 압축을 푼다.

C:\Android\sdk\adt-bundle-windows-x86_64-20130911

이런식으로 폴더가 생기고 안에는 sdk와 이클립스 폴더가 있다.

android sdk 도 마찬가지로 환경변수를 설정해준다.

폴더 안에 있는 SDK Manager를 실행한다.

sdk 버전 4.3, 4.2.2 , 4.1.2 , 2.3.3 , 2.2 등을 선택하고 인스톨을 눌러 설치하자

 

 

설치하는데 꽤 오랜시간이 걸립니다.

설치하는동안 안드로이드 sdk 환경변수를 설정합니다.

path 에 뒤에 android sdk 설치 경로를 붙입니다.

예) C:\Android\sdk\adt-bundle-windows-x86_64-20130911\sdk\tools

 


cgwin 설치

http://cygwin.com/install.html

위 링크를 클릭하고 설치합니다.

Debel 및 Editors 옆에 Default를 클릭하면 Install 로 바뀌고 두개를 Install로 바꾸고

다음을 클릭하고설치합니다. 

 

 


 

안드로이드 ndk 설치

http://developer.android.com/tools/sdk/ndk/index.html

위 링크에서 ndk 최신 버전을 다운받습니다.

현재 최신버전은 r9입니다.

예) C:\Android\ndk

이 폴더에 최신파일을 받았습니다. 최신파일을 받고 압축을 풉니다.

압축을 풀고 환경변수를 설정합니다.

변수이름 : NDK_ROOT 

변수 값 : C:\Android\ndk\android-ndk-r9

추가합니다.


이클립스 ADT 설치

방금 sdk를 다운받은 경로안에 이클립스가 있습니다 이클립스를 실행합니다.

C:\Android\sdk\adt-bundle-windows-x86_64-20130911\eclipse

eclipse.exe 파일은 자주 사용하니 바탕화면에 바로가기를 만들어 놓습니다.

 이클립스를 실행하고 Help-Install new Software를 클릭합니다.

 Work With 옆에 add 버튼을 클릭합니다.

위 창에 이름과

AndroidAdt

http://dl-ssl.google.com/android/eclipse/

를 입력합니다. ok를 누르면

 

아래 처럼 Developer Tools와 Ndk Plugins를 선택하고 다음을 클릭하고 설치합니다.

 

설치를 다하고 나면

 

 

yes 버튼을 눌러 다시 시작합니다.

 

 

'잡다한것들전부 > 세팅2' 카테고리의 다른 글

cocos2d-x 기본 세팅 - 4  (2) 2013.09.21
cocos2d-x 기본 세팅 - 3  (0) 2013.09.20
cocos2d-x 기본 세팅 - 2  (0) 2013.09.19
cocos2d-x 기본 세팅 - 1  (0) 2013.09.19
Trackback 0 And Comment 0
prev | 1 | next