'잡다한것들전부'에 해당되는 글 207건

  1. 2013.12.02 ios7 UITableView 사용시 배경화면 흰색으로 나오는 현상
  2. 2013.12.02 iOS7 상태바 안보이게 설정하기
  3. 2013.11.28 까페에서 공부하는 느낌이 나는 분위기를 조성하는 사이트
  4. 2013.11.24 유니티 개발 환경 구축 - 안드로이드 관련
  5. 2013.11.20 관련 사이트
  6. 2013.09.23 cocos2d-x 기본 컨셉
  7. 2013.09.22 챕터 6 - 씬을 전환하는 방법 (1)
  8. 2013.09.22 챕터 5 - 음악 재생 및 이펙트 효과음 재생 하는 법
  9. 2013.09.22 챕터 4 - 충돌 체크하는 법
  10. 2013.09.21 챕터 3 - 표창을 발사하는 방법

ios7 UITableView 사용시 배경화면 흰색으로 나오는 현상

|
ios7은 UITableView의 셀 배경이 기본으로 흰색으로 설정되있는 것 같습니다.


cellForRowAtIndexPath 함수에 아래의 내용을 추가합니다.

cell
.backgroundColor = [UIColor clearColor]; cell.backgroundView = [[UIView new] autorelease]; cell.selectedBackgroundView = [[UIView new] autorelease];


Trackback 0 And Comment 0

iOS7 상태바 안보이게 설정하기

|

 iOS가 7 로 되면서 시간과 배터리 등의 정보가 상태바에 표시되는 증상이 있습니다. into.plist 파일에 View controller-based status bar appearance를 Add Row하시고 속성값을 NO로 세팅해주면 됩니다. 이런 현상이 사라지게 됩니다.

Trackback 0 And Comment 0

까페에서 공부하는 느낌이 나는 분위기를 조성하는 사이트

|

http://wheresound.com/?w=1


까페에서 시끄럽게 잡담하는 소리들이 백색소음이라고 집중이 더 잘된다고 하네요.


Trackback 0 And Comment 0

유니티 개발 환경 구축 - 안드로이드 관련

|

먼저 윈도우 환경에서 안드로이드 os 환경에 맞는 유니티 세팅 방법입니다.

맥도 없고 아이폰도 없는 보통의 사용자를 위한 가이드 입니다.


개발환경

os : windows 7 64비트


먼저 유니티를 다운 받습니다.

http://korea.unity3d.com/

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






next 버튼을 눌러 설치를 해줍니다.




유니티를 설치하고 난후 안드로이드 환경에서 빌드하기 위해서는 두가지가 필요합니다.

1. Java jdk 설치

2. Android Sdk 설치


java jdk 와 sdk 는 모두 32비트용 64비트용 이 존재합니다. 현재 유니티에서는 64비트용을 설치했을 경우에

알수 없는 오류들이 나타나서 빌드가 제대로 실행 되지 않습니다.

반드시 32비트를 설치해 주셔야 됩니다.


1. java jdk 설치

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html







x86버전으로 다운받습니다.


설치화면 next를 누릅니다.




java를 설치한후 

환경변수를 설정해줍니다.

컴퓨터 - 속성 - 고급시스템설정

에서 jdk 가 설치된 경로를 저장합니다.

변수명 : JAVA_HOME

설치경로 : 예)C:\Program Files (x86)\Java\jdk1.7.0_45




시스템변수를 설정후

path경로에 JAVA_HOME을 추가합니다.

;%JAVA_HOME%bin;을 변수값 맨 마지막에 집어넣어줍니다.



설정 완료후 cmd 창을 열어서 

윈도우 키 + r 후 cmd 입력 엔터

javac를 입력합니다.



위와 같이 출력이 되었으면 제대로 설치가 된것입니다.


2. Android Sdk 설치

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

안드로이드 sdk도 마찬가지로 32비트로 설치합니다.



다운받은 파일을 압출을 풀면
이클립스와 sdk 파일이 있습니다.
마찬가지로 환경변수를 설정합니다.

이름 ANDROID_SDK
설치경로 : 예) C:\Android\adt-bundle-windows-x86-20131030\sdk

저는 c드라이브에 Android 폴더에 설치했습니다.

설정후 Path 맨 마지막에
;%ANDROID_SDK%tools;
를 입력후 확인을 누릅니다.

그리고 안드로이드 sdk가 설치된 경로로 가서 sdk manager 를 실행시키고

필요한 sdk 파일들을 설치합니다.

저는 4.4, 4.3 , 4.2.2, 4.1.2, 4.0.3 , 2.3.3 , 2.2 버전을 설치했습니다.


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

유니티 개발 환경 구축 - 안드로이드 관련  (0) 2013.11.24
Trackback 0 And Comment 0

관련 사이트

|

http://paralaxer.com/


http://www.supersuraccoon-cocos2d.com/2011/09/17/sticky-demo-resource-list-keep-updating/

Trackback 0 And Comment 0

cocos2d-x 기본 컨셉

|

현재 cocos2d-x 홈페이지에 있는 내용을 간단하게 요약하여 정리 후 포스팅할 예정입니다.

혼자서 공부하면서 얻은 지식이나 방법들을 미약하지만 공유하고 싶습니다.

cocos2d-x 는 오픈소스 기반이며 쉽고 강력한 엔진입니다.

C++, Lua, javascript등의 언어를 지원하고 아이폰,안드로이드,윈도우폰,블랙베리,타이젠,등을 지원하는 

크로스 플램폼 엔진입니다.

cocos2d-x는 현재 150만명이 다운받았고 사용하고 있습니다 . 많은 게임들이 앱스토어나 구글플레이에서 높은 수익을 얻고 있습니다.

 

 

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

챕터 3 - 표창을 발사하는 방법

|

표창을 던져서 적을 죽이는 코드를 추가하자. 먼저 레이어에 터치가 가능하게 하는 코드를 추가하자

bool HelloWorld::init() 맨 아래에 추가(return true 바로위)

 

//터치가능하게

this->setTouchEnabled(true);

Cllback 함수인

"void ccTouchesEnded(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);"

를 HelloWorldScene.h 에 추가하고

HelloWorld.cpp 에 아래 함수를 추가하자

이제 터치를 하면 표창을 던질수 있다.

 

 

 

 


 

 

소스 설명

 

 

  int realX = winSize.width + (projectile->getContentSize().width/2);

  float ratio = (float)offY/(float)offX;

  int realY = (realX * ratio) + projectile->getPosition().y;

 

ratio = 삼각함수 비를 그대로 곱해줘서 x값에 비례하는 y값을 구할수 있습니다.

 

 

 


 

 

float length = sqrtf((offRealX * offRealX) +(offRealY * offRealY));

float velocity = 480/1;

float realMoveDuration = length/velocity;

 

1. length 는 피타고라스의 정리 a^2 + b^2 = c^2

sqrtf 함수는 제곱근을 구하는 함수입니다.

2. velocity 는 속력을 구하는 공식입니다.

가로 길이 480 / 1초

3. 시간을 구하는 함수입니다.

시간= 거리/속력

 

기초 물리공식

거리: 속력*시간

속력: 거리/시간

시간: 거리/속력 입니다..  

*계산 예문

 거리는? 60km *1시간 = 60km       속력은? 60km /1시간 = 60km     시간은? 60km / 60km =1시간

Trackback 0 And Comment 0
prev | 1 | ··· | 17 | 18 | 19 | 20 | 21 | next