'cocos2d'에 해당되는 글 8건

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

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

[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