이것때문에 여러날을 고생했는데,

어떤 분이 도움을 주셔서 해결했다.

 

 

첫번째 문제점.

 

일단 타일맵 기반이면 줌인 줌아웃, 맵 이동도 되어야하는데

터치를 거기에다가만 쓰면 건물짓기와 같은 다른 수행을 할 수가 없다.

그래서 줌인줌아웃클래스를 따로 만들어서 그것을 상속받고,

터치를 다음 처럼 이중으로 써야한다

 

ccTouchBegan(CCTouch* pTouch, CCEvent* pEvent ){

 

 

//@brief : 받은 인자를 고대로 물려준다. 사용하기전에 헤더를 인클루드 해주는 것은 잊지말자

 

줌인클래스::ccTouchBegan(pTouch, pEvent);

 

//내가 하고 싶은 다른 수행 입력

 

}

 

 

 

두번째 문제점.

 

터치의 좌표가 일치하지 않는다.

convert 라는 내용이 들어간 함수를 써야할 것 같다는 느낌은 오는데 어떻게 사용해야하는지 몰라서 헤맸다.

상황에 따라 다르겠지만, 우리는 layer위에 타일맵을 addchild하고, 해당 layer에서 터치를 받아와서 쓰려고했는데 좌표가 전혀 엉뚱한 곳을 가리켰다.

그래서 이런식으로 해결했다.

 

ccTouchBegan(생략){

 

 

CCTMXTileMap* map = CCTMXTileMap::create("맵파일이름.tmx"); 

CCPoint touchLocation  = map->convertTouchToNodeSpace(pTouch);

CCLog("좌표확인 : (%f, %f)"touchLocation.x, touchLocation.y);

}

 

 

//pTouch가 갑자기 등장했는데 pTouch를 가져오는게 정확히 생각이 안난다 ㅋㅋㅋㅋㅋ 생각나면 적어드릴게요

 

'개발일지 > cocos2d-x' 카테고리의 다른 글

CCTileMapAtlas 의 정체는...  (0) 2014.02.19
table scroll 참고 사이트  (0) 2014.02.17
나중에 살펴볼 함수들  (0) 2014.02.13
동적으로 파일 가져오기  (0) 2014.02.10
오브젝트 가져오기와 애니메이션 적용  (0) 2014.02.03
Posted by jeff제프
,

tilemap에 대하여 찾아보다보면 


CCTileMapAtlas로 선언하는 코드를 볼 수가 있었다. 궁금했었는데, 설명을 보니까 정체는


CCTileMap의 구버전? 같은건가보다.

 

정확히는 모르겠지만

 

CCTileMap은 완성된 타일맵을 통째로 가져오는 반면

 

Atlas는 한개의 타일을 지정해주면 렌더링을 해서 쭉 깔아주는 것 같다.

 

이제부턴 Atlas 대신 CCTileMap 클래스를 쓰라고 적혀있다. 




p.s) Altas = '지도'


'개발일지 > cocos2d-x' 카테고리의 다른 글

tilemap 기반 게임의 터치  (0) 2014.02.21
table scroll 참고 사이트  (0) 2014.02.17
나중에 살펴볼 함수들  (0) 2014.02.13
동적으로 파일 가져오기  (0) 2014.02.10
오브젝트 가져오기와 애니메이션 적용  (0) 2014.02.03
Posted by jeff제프
,

http://www.cnblogs.com/jiushichenan/p/3500881.html




가속도센서 참고 사이트



http://pulsebeat.tistory.com/44

Posted by jeff제프
,

나중에 살펴볼 함수들



-objectAtIndex()


CCSprite* aa = (CCSprite*) ( aa->objectAtIndex(i) );


-addObject(NAME)


CCSprite* spr = ~~;

bg -> addObject(spr);


-tileAt()





'개발일지 > cocos2d-x' 카테고리의 다른 글

CCTileMapAtlas 의 정체는...  (0) 2014.02.19
table scroll 참고 사이트  (0) 2014.02.17
동적으로 파일 가져오기  (0) 2014.02.10
오브젝트 가져오기와 애니메이션 적용  (0) 2014.02.03
3.0 터(퍼옴)  (0) 2014.01.16
Posted by jeff제프
,




        //std::string filename = m_name + "/01.png";

        

        //CCSprite * spr = CCSprite::create(filename.c_str());

'개발일지 > cocos2d-x' 카테고리의 다른 글

table scroll 참고 사이트  (0) 2014.02.17
나중에 살펴볼 함수들  (0) 2014.02.13
오브젝트 가져오기와 애니메이션 적용  (0) 2014.02.03
3.0 터(퍼옴)  (0) 2014.01.16
3.0 beta 프로젝트 생성 방법  (0) 2014.01.16
Posted by jeff제프
,

버전 2.2.1

시작하세요 교재 311



#include "HelloWorldScene.h"


USING_NS_CC;


CCScene* HelloWorld::scene()

{

   

    CCScene *scene = CCScene::create();

    

        HelloWorld *layer = HelloWorld::create();

    scene->addChild(layer);


    return scene;

}


bool HelloWorld::init()

{

        if ( !CCLayer::init() )

    {

        return false;

    }

    

    //화면 크기 가져오기

    

    //기존 코드

    CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();

    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();

    //추가한 코드

    winSize = CCDirector::sharedDirector()->getWinSize();

    

    

    

    tmap = CCTMXTiledMap::create("TestDesert.tmx");

    this->addChild(tmap, 0 , 11);

    

    

    

    

    

    //Ojbects라는 이름의 오브젝트 레이어 객체 가져오기

    CCTMXObjectGroup* objects = tmap->objectGroupNamed("Objects");

    

    

    //오브젝트 레이어에서 spawnPoint 지정한 속성값 읽어오기

    CCDictionary* spawnPoint = objects->objectNamed("SpawnPoint");

    

    int x = ((CCString*)spawnPoint -> objectForKey("x"))->intValue();

    int y = ((CCString*)spawnPoint -> objectForKey("y"))->intValue();

    

    

    //가져온 정보(위치) 드래곤 생성하기

    

    dragonPosition = ccp(x,y);

    

    this->createDragon();


    

    

    return true;

}



void HelloWorld::createDragon(){

    

    

    //리소스를 texture 등록하기

    CCTexture2D *texture = CCTextureCache::sharedTextureCache() -> addImage("dragon_animation.png");

    

    //애니메이션 생성하고 애니메이션 주기 0.1초로 세팅하기?

    CCAnimation *animation = CCAnimation::create();

    animation->setDelayPerUnit(0.1);

    

    

    

    //애니메이션에 texture이미지 더하는데 frame 방식(batch)으로 하기, 이미지가 가로 몇개 세로 몇개 인지에 따라서 ccrectmake 설정해주기

    

    for (int i=0; i<6; i++) {

        int index = i%4;

        int rowIndex = i/4;

        

        animation->addSpriteFrameWithTexture(texture, CCRectMake(index*130, rowIndex*140, 130, 140));

        

    }

    

    dragon = CCSprite::createWithTexture(texture, CCRectMake(0, 0, 130, 140));

    dragon->setPosition(dragonPosition);

    this->addChild(dragon);

    

    

    

    //드래곤 방향을 바꿔준다

    dragon->setFlipX(true);

    

    

    //드래곤 사이즈 줄여준다.

    dragon->setScale(0.5);

    

    //드래곤 애니메이션

    CCAnimate *animate = CCAnimate::create(animation);

    

    CCAction* rep = CCRepeatForever::create(animate);

    dragon->runAction(rep);

    

    

}



---------

집 띄울 때는 공사중인 집 모양 스프라이트 설정해놓고

animation->setDelayPerUnit(4.0);

이런식으로 하면 되겠다


오늘 문득 든 생각인데, 코딩하는 것도 수학 공부하는거랑 비슷하다고 생각이 들었다. 

남이 풀이해준거는 아무 소용없고, 

남이 풀이해준걸로 한번 공부한 후에 집에 가서 곰곰히 식을 하나 하나 짚어가면서 

복습을 해야 내 스킬이 될 것 같다. 

오늘부터라도 날마다 코딩한 것을 집에 가져가서 프린트를 해서 읽든, 타블렛 펜으로 표시해가며 읽든 해야겠다.


'개발일지 > cocos2d-x' 카테고리의 다른 글

나중에 살펴볼 함수들  (0) 2014.02.13
동적으로 파일 가져오기  (0) 2014.02.10
3.0 터(퍼옴)  (0) 2014.01.16
3.0 beta 프로젝트 생성 방법  (0) 2014.01.16
공통헤더  (0) 2014.01.14
Posted by jeff제프
,

*개인 참고용으로 스크랩해온 내용입니다.


터치 이벤트 처리가 필요한 Layer 의 헤더파일에 터치 리스너 변수와 함수를 선언합니다.


cocos2d::EventListenerTouchOneByOne* _touchListener;


virtual bool onTouchBegan(cocos2d::Touch* touch, cocos2d::Event* event);


cpp 파일에서 초기화 함수 부분에 터치 이벤트 리스너를 설정하고 이벤트 디스패쳐에 등록해줍니다.



_touchListener = EventListenerTouchOneByOne::create();

_touchListener->setSwallowTouches(true);

    

_touchListener->onTouchBegan = CC_CALLBACK_2(TestLayer::onTouchBeganthis);

    

EventDispatcher* dispatcher = Director::getInstance()->getEventDispatcher();

    

dispatcher->addEventListenerWithSceneGraphPriority_touchListenerthis);




onTouchBegan, Moved, Ended, Cancelled 는 이전처럼 작성해주면 됩니다.


bool TestLayer::onTouchBegan(Touch* touch, Event* event)

{

    Point touchPoint = touch->getLocation();

    

    log("Default Touch began : (%f %f)",touchPoint.x, touchPoint.y);

    

    return true;

}



'개발일지 > cocos2d-x' 카테고리의 다른 글

동적으로 파일 가져오기  (0) 2014.02.10
오브젝트 가져오기와 애니메이션 적용  (0) 2014.02.03
3.0 beta 프로젝트 생성 방법  (0) 2014.01.16
공통헤더  (0) 2014.01.14
윈도우 사이즈 가져오기  (0) 2014.01.14
Posted by jeff제프
,




이번에 새로 바뀐 cocos2d-x beta 버전 프로젝트 생성하는 방법입니다 




참고로 


cd는 change directory 의 약자로 현재위치를 바꿔주는 것이고 


ls는 현재 폴더에 있는 파일들을 보여주는 명령어 입니다.



'개발일지 > cocos2d-x' 카테고리의 다른 글

오브젝트 가져오기와 애니메이션 적용  (0) 2014.02.03
3.0 터(퍼옴)  (0) 2014.01.16
공통헤더  (0) 2014.01.14
윈도우 사이즈 가져오기  (0) 2014.01.14
기본구조 이해하기 action편  (0) 2014.01.10
Posted by jeff제프
,

공통 헤더를 선언하니까 편한 것 같다. 

사용하는 방법을 소개한다.



일단 

하나의 헤더를 선언한다.(여기서는  common.h 이라고 이름지었다)

그 안에 다음과 같이

cocos2d.h를 include 해주고

USING_NS_CC;해주면 



#include "cocos2d.h"


USING_NS_CC;



//크기 지정

#define DESIGN_WIDTH 768.0f

#define DESIGN_HEIGHT 1024.0f



//가로 세로 카운트 8곱하기8


#define ROW_COUNT 8

#define COLUMN_COUNT 8

#define MAX_ROW_COUNT 10



//7가지 종류의 블록이 있으니까 7

#define TYPE_COUNT 7




//물체 크기, 간격

#define OBJECT_WIDTH 96

#define OBJECT_HEIGHT 96



#endif





다른 파일들에서는

#include "common.h"

이렇게 하는 것만으로 cocos2d 함수들을 사용할 수 있고, 아래 나와있는 상수들을 쓸 수 있다. 

readibility를 아주 많이 상승시킨다. 


주의)다른 헤더 파일들에서 common.h를 인클루드 시켜야 하고, 

예외적으로 AppDelegate.cpp에서 인클루드 시켜주어야 한다.



'개발일지 > cocos2d-x' 카테고리의 다른 글

3.0 터(퍼옴)  (0) 2014.01.16
3.0 beta 프로젝트 생성 방법  (0) 2014.01.16
윈도우 사이즈 가져오기  (0) 2014.01.14
기본구조 이해하기 action편  (0) 2014.01.10
기본구조 이해하기 Director편  (0) 2014.01.10
Posted by jeff제프
,



GameLayer.h 에서


클래스 선언할 때 다음처럼 protected 로 선언해 놓고 




class GameLayer : public Layer

{

    

public:

    bool init();

    

    //스테이지 세팅, 오브젝트 배치, 데이터 초기화 등을 수행할 함수

    void StartGame();

    

    

    static Scene* scene();

    

    CREATE_FUNC(GameLayer);

    

protected:

    Size winSize;

    

    

};







GameLayer.cpp에서

초기화 하는 부분에




init()

{

 

~~

   

    Size winSize = Director::getInstance()->getWinSize();

 


}



이렇게 해서 받아오면 다음부터 

winSize.width

windSize.height

이런식으로 간단히 사이즈를 다룰 수 있게 된다





'개발일지 > cocos2d-x' 카테고리의 다른 글

3.0 beta 프로젝트 생성 방법  (0) 2014.01.16
공통헤더  (0) 2014.01.14
기본구조 이해하기 action편  (0) 2014.01.10
기본구조 이해하기 Director편  (0) 2014.01.10
기본구조 이해하기 node편  (0) 2014.01.10
Posted by jeff제프
,