본문 바로가기
반응형

프로그래밍331

cocos2d-x warning error C2360 ●error2360- switch문에서 나타난 에러이다. 에러를 해결하려면 switch문 case에 {} 을 사용한다. ex)switch(a){case 1: { ~~~ }case 2: { ~~~ }} 2013. 6. 3.
cocos2d-x 패럴렉스노드(ParallaxNode) ●두개이상의 배경 이미지 패럴랙스노드에 추가 - HelloWorldScene.cpp #include "HelloWorldScene.h" using namespace cocos2d; CCScene* HelloWorld::scene(){ CCScene *scene = CCScene::create(); HelloWorld *layer = HelloWorld::create(); scene->addChild(layer); return scene;} bool HelloWorld::init(){ if ( !CCLayerColor::initWithColor(ccc4(255, 255, 255, 255)) ) { return false; } ///////////////////////////////배경 스프라이트1CCSpr.. 2013. 6. 2.
cocos2d-x CCUserDefault ●CCUserDefault- 환경설정이나 점수등을 저장하는 등 데이터를 저장할 때 사용한다.ios의 NSUserDefault, 안드로이드의 SharedPreferences와 비슷하다. ●String형 저장, 불러오기- 저장CCUserDefault::sharedUserDefault()->setStringForKey("string", "aa"); //(이름, 값) - 불러오기std::string s = CCUserDefault::sharedUserDefault()->getStringForKey("string"); ●Interger형 저장, 불러오기- 저장CCUserDefault::sharedUserDefault()->setIntegerForKey("integer", 1); - 불러오기int i = CCUse.. 2013. 6. 1.
cocos2d-x 스케줄 ●스케줄- 특정시간마다 특정함수를 호출한다.- 정지(pause), 재시작(resume), 스테이지로 들어가면 타이머 활성화 등을 사용하게 해준다. ●예제- HelloWorldScene.h #ifndef __HELLOWORLD_SCENE_H__#define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" class HelloWorld : public cocos2d::CCLayerColor{public: virtual bool init(); static cocos2d::CCScene* scene(); CREATE_FUNC(HelloWorld);void doStart(CCObject* pSender);void doPause(CCObject* pSender);void doResum.. 2013. 6. 1.
cocos2d-x 터치(Touch) ●스탠다드 터치 델리게이트 예제 - HelloWorldScene.h #ifndef __HELLOWORLD_SCENE_H__#define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" class HelloWorld : public cocos2d::CCLayerColor{public: virtual bool init(); static cocos2d::CCScene* scene(); CREATE_FUNC(HelloWorld);virtual void ccTouchesBegan(cocos2d::CCSet *pTouches, cocos2d::CCEvent* event);virtual void ccTouchesMoved(cocos2d::CCSet *pTouches, cocos2d::C.. 2013. 6. 1.
cocos2d-x 심플오디오엔진(SimpleAudioEngine) ●심플오디오엔진을 사용하려면 프로젝트 종속성 설정에서 libCocosDeshion을 선택해준다. ●효과음 내기- SimpleAudioEngine::sharedEngine()->playEffect("effect.wav"); ●효과음 미리 로딩 - 용량이 큰 파일을 재생하는데 시간이 걸리기 때문에 미리 메모리에 준비시킨다.- SimpleAudioEngine::sharedEngine()->preloadEffect("effect.wav"); ●효과음 메모리 해제- SimpleAudioEngine::sharedEngine()->unloadeffect(EFFECT_FILE); ●배경음 내기- SimpleAudioEngine::sharedEngine()->playBackgroundMusic("background.mp.. 2013. 5. 31.
cocos2d-x 애니메이션 ●그림 파일을 입출력 할때 시스템 비용이 많이 든다. 그래서 여러개의 그림파일을 하나의 파일(plist)로 만들어서 불러들이고 plist에서 필요한 그림파일을 불러들이는게 좋다. 개별 스프라이트를 불러들이는 것보다 plist를 통해 불러들이면 리소스 관리가 쉽고 편하다. ●스프라이트 배치 노드를 이용한 애니메이션 - HelloWorld.cpp #include "HelloWorldScene.h" using namespace cocos2d; CCScene* HelloWorld::scene(){ CCScene *scene = CCScene::create(); HelloWorld *layer = HelloWorld::create(); scene->addChild(layer); return scene;} bool.. 2013. 5. 31.
cocos2d-x 트랜지션(Transition) 추가,삭제,교체 ●장면 추가,삭제,교체 - HelloWorldScene.h #ifndef __HELLOWORLD_SCENE_H__#define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" #include "Box2D/Box2D.h" #include "SimpleAudioEngine.h" class HelloWorld : public cocos2d::CCLayerColor{public: virtual bool init(); static cocos2d::CCScene* scene(); CREATE_FUNC(HelloWorld);void doPushScene(CCObject* pSender);void doReplaceScene(CCObject* pSender);}; #endif // __HE.. 2013. 5. 30.
cocos2d-x 액션3 ●이즈 액션(Ease Action)- 전체 액션시간은 수정하지 않고 내부의 액션 속도를 조절한다. CCEaseIn - 액션의 끝이 빨라진다.CCEaseOut - 액션의 처음이 빨라졌다가 끝이 느려진다.CCEaseInOut - 액션의 처음이 느렸다가 중간에 빨라지고 끝에서 느려진다. void HelloWorld::doAction(CCObject* pSender) {//액션 정의CCActionInterval* move=CCMoveBy::create(2,ccp(100,0)); //빨라지기CCActionInterval* move_ease_in=CCEaseIn::create(move, 2);//느려지기CCActionInterval* move_ease_out=CCEaseOut::create(move, 2);//빨라.. 2013. 5. 29.
cocos2d-x 액션2 ●CCSequence- 액션의 순서를 정하고 순차적으로 실행한다. void HelloWorld::doAction(CCObject* pSender){//액션 정의CCActionInterval* action1=CCMoveTo::create(2,ccp(100,200));CCActionInterval* action2=CCRotateBy::create(2,90);CCActionInterval* action3=CCScaleTo::create(2, 2.0); CCFiniteTimeAction* seq=CCSequence::create(action1, action2, action3, NULL); pMan->runAction(seq);} ●CCSpawn- 등록된 모든 액션을 동시에 시행한다. void HelloWorld.. 2013. 5. 28.
cocos2d-x 액션1 ●액션- 많은 액션은 By와 To로 나뉘는데 By는 지정한 값만큼 변하는 것이고, To는 지정한 값으로 변하는 것이다.- 위치관련 - CCMoveBy, CCMoveTo, CCJumpBy, CCJumpTo, CCBezierBy, CCBezierTo, CCPlace- 크기관련 - CCScaleBy, CCScaleTo- 회전관련 - CCRotateBy, CCRotateTo- 가시성 - CCShow, CCHide, CCBlink, CCToggleVisibility- 투명도 - CCFadeIn, CCFadeOut, CCFadeTo- 색관련 - CCTintBy, CCTintTo ●액션 기본 예제 - HelloWorldScene.cpp의 doAction함수안에 여러가지 액션 함수를 넣어 액션 예제를 확인한다. - H.. 2013. 5. 28.
c++ 폴더안에 있는 헤더파일 include ●c++헤더파일 추가- 폴더안에 있는 헤더파일 include 할때 폴더이름까지 써야함ex)include "aaa/aaa/a.h" 2013. 5. 26.
cocos2d-x 메뉴 ●메뉴 사용하기- cpp에 메서드를 추가하려면 헤더파일에도 선언을 추가해야한다. - HelloWorldScene.cpp dp 다음과 같이 입력해준다. ●메뉴 아이템에서 태그 사용하기- 메뉴 아이템에 태그를 사용하면 같은 메서드에서 어떤 메뉴 아이템이 선택되었는지 구분할 수 있다.- 헤더파일에 cpp에서 사용할 메서드를 선언해준다. 2013. 4. 27.
cocos2d-x 스프라이트(sprite) ●스프라이트 출력하기- HelloWorldScene.cpp의 init에 다음과 같이 입력해준다. //스프라이트 생성 및 초기화 CCSprite* man=CCSprite::create("images/이미지 이름.png"); //스프라이트 위치 지정 man->setPosition( ccp(240,160)); //레이어에 스프라이트 객체 추가 this->addChild(man); ●이미지가 중첩될 경우 순서 정하기- addChild에 숫자를 넣어준다. 숫자가 큰게 위에 온다. this->addChild(man,숫자) ●두 이미지를 한번에 묶기- 하나의 스프라이트에 다른 스프라이트를 포함 시킬수 있다.- 스프라이트를 합치게 되면 자식 스프라이트의 좌표 기준점은 부모스프라이트의 왼쪽 하단이 된다. #include.. 2013. 4. 25.
cocos2d-x CCLabelTTF ●화면에 글자 출력하기- HelloWorldScene.cpp의 init부분에 다음과 같이 입력한다 #include "HelloWorldScene.h" using namespace cocos2d; CCScene* HelloWorld::scene(){ CCScene *scene=CCScene::create(); HelloWorld *layer=HelloWorld::create(); scene->addChild(layer); // return the scene return scene;} // on "init" you need to initialize your instancebool HelloWorld::init(){if(!CCLayerColor::initWithColor(ccc4(255,255,255,255).. 2013. 4. 22.
cocos2d-x Visual studio 프로젝트 생성할때 스크립트 오류 ●스크립트 오류- 이 페이지의 스크립트에서 오류가 발생하였습니다. 이 페이지에서 스크립트를 계속 실행하시겠습니까? ●Window7에서 visual stdio에서 프로젝트 생성할때 스크립트 오류 발생 시 해결 1. 해당 스크립트 속성에서 권한부여2. regedit 설정 3. ie8,9 제거 1. 문제가 되는 스크립트에 가서 마우스 오른쪽 버튼->속성에서 모든 권한부여 등을 해준다. C:\cocos2d-2.0-x-2.0.4\template\msvc\CCAppWiz.win32\HTML\1033C:\Program Files\Microsoft Visual Studio 10.0\VC\VCWizards\1033 2. regedit에 들어가서 HKEY_CURRENT_USER->Software->Microsoft->Wi.. 2013. 4. 19.
cocos2d-x 프로젝트 기본형 ●프로젝트 생성하기 - 프로젝트를 생성한다. - 사용할 엔진을 선택한다. ●프로젝트 종속성 선택 - 프로젝트를 선택하고 우클릭->프로젝트 종속성을 선택한다. 창이 뜨면 필요한 라이브러리를 선택한다. libcocos2d는 기본적으로 선택한다. ●AppDelegate.cpp 를 선택해서 다음 부분을 수정한다.- pDirector->setDisplayStats(true); 부분을 pDirector->setDisplayStats(false); 로 바꾸어 주면 좌측하단에 fps가 표시되지 않는다. ●HelloWorldScene.h 를 선택해서 다음 부분을 수정한다.- CCLayer 를 CCLayerColor로 수정해준다. 기본적으로 상속받는 레이어의 배경은 검은색인데 다른색으로 변경하기 위해 수정한 것이다.- m.. 2013. 4. 15.
cocos2d-x 기본구조 ●CCNode- CCNode는 cocos2d-x의 최상위 클래스로 cocos2d-x의 모든 클래스는 이 클래스를 상속받는다.- CCNode는 자식노드를 가질수 있다. ●CCDirector- 싱글톤클래스로 하나의 어플리케이션에서 하나의 인스턴스만 존재한다.- 게임의 화면을 장면단위로 구성해서 처리할 수 있는 기능을 제공한다.- 여러 장면들을 뒤로 가게 하거나 앞으로 가도록 하는 클래스이다. ●CCScene, CCLayer- 일반적인 게임의 메인화면, 메뉴화면, 게임화면 등이다.- CCScene은 터치이벤트, accelerometer 입력을 처리할 수 없다.- CCLayer는 터치이벤트, accelerometer 입력을 처리할 수 있다. ●CCSprite- 이미지 파일을 화면에 출력하는 역할을 한다.- 이미.. 2013. 4. 15.
cocos2d-x 윈도우 개발 환경 세팅하기 ●이 블로그에서 cocos2d-x개발하는 환경은 Window7 32bit입니다. ●cocos2d-x - cocos2d-x는 c++을 사용한다. - cocos2d-x로 프로그래밍 할 경우 별도의 수정 없이 하나의 소스로 ios, 안드로이드용 앱을 만들수 있다. 다만 ios용은 최종 컴파일은 맥에서 해야한다. - cocos2d-x 자체가 개발 툴은 아니고 그래픽 프레임워크이기 때문에 개발툴에 설치되어야 한다. 윈도우에서는 Visual Studio, 이클립스 등, 맥에서는 Xcode에 설치해서 사용한다. ●cocos2d-x 개발 환경 세팅하기 - cocos2d-x 다운로드 - http://www.cocos2d-x.org 에서 cocos2d-x를 다운로드한다. - 압축을 풀고 적당한 위치에 압출을 푼 폴더를 둔.. 2013. 4. 15.
안드로이드 상단의 제목표시줄 없애고 전체화면(Full Screan)모드로 표시 ●상단의 제목표시줄을 없애고 전체 화면(Full Screen)모드로 표시하기 - 매인 액티비티의 setContentView() 메서드 위에 설정한다. - 프로그램 제목 표시줄 없애기 requestWindowFeature(Window.FEATURE_NO_TITLE); - 상태표시줄 없애기 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 2013. 1. 1.
안드로이드 에러 E/AndroidRuntime(351): java.lang.IllegalArgumentException: current should be >= start and <= end ●DatePickerDialog 처리할때 생긴 에러입니다. E/AndroidRuntime(351): java.lang.IllegalArgumentException: current should be >= start and 2012. 11. 3.
안드로이드 디데이(dday) 계산 소스2 ●DatecalActivity.java package your.pack; import java.util.Calendar; import android.app.Activity; import android.app.DatePickerDialog; import android.app.Dialog; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.DatePicker; import android.widget.TextView; public class DatecalActivity extends Activity {.. 2012. 10. 31.
안드로이드 디데이(Dday) 계산 소스 ●레이아웃 2012. 10. 30.
안드로이드 계산기 소스2 ● package your.packaga; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class CalculActivity extends Activity implements OnClickListener{ /** Called when the activity is first created. */ double a, b, tmp; //a는 첫번째 숫자, b는 두번째 숫자, c는 중간 계산값 int flag1=0, f.. 2012. 10. 29.
안드로이드 계산기 소스1 ●레이아웃 2012. 10. 29.
유니티(unity) 3D 터레인(Terrain) ●Terrain추가 - 프로젝트탭에서 우클릭->Import Package->Terrain assets 을 선택하고 창이 뜨면 import버튼을 누른다. - 상단 메뉴 Terrain->Create Terrain을 누른다. ●터레인 크기 조절 - 상단 메뉴 Terrain의 Set Resolution메뉴를 누르면 터레인 크기를 조절할 수 있다. ●터레인의 인스펙터를 보면 마치 심시티에서 맵을 만들 때 처럼 나무,지형 등을 추가, 수정, 삭제 등을 할 수 있다. ●스카이박스 설정 - 프로젝트 탭에서 우클릭->Import Package->SkyBox - 상단 메뉴의 Edit->Rending Setting을 누른다. - 아래 사진처럼 SkyBox Meterial 오른쪽 작은 동그라미 버튼을 눌러서 원하는 하늘을 선.. 2012. 8. 30.
유니티(unity) 3D 사운드 출력, 오브젝트에 색,텍스처 넣기 ●사운드 출력 1. 오브젝트를 선택한 후 Component->Audio->Audio Source 를 선택한다. 2. 추가할 음악 파일을 해당 오브젝트 안의 인스펫터의 Audio Source에 있는 Audio Clip에 드래그한다. ●오브젝트에 색 넣기 1. 프로젝트 탭에서 우클릭후 create->Meterial를 누른다. 2. 만든 Meterial 파일을 누른뒤 인스펙터의 Main Color부분을 눌러서 색을 설정한다. 3. 만든 Meterial을 적용할 오브젝트에 드래드한다. ●오브젝트에 텍스처 넣기 1. 적용할 텍스처를 아래 그림처럼 네모안에 드래그한다. 2. 만든 Meterial을 적용할 오브젝트에 드래드한다. 2012. 8. 29.
유니티(unity) 3D 카메라 워킹, 프리팹 ●카메라 워킹 1. 프로젝트탭에서 Import Package->Script를 누른다. 2. Import를 누른다. 3. SmoothFollow를 드래그해서 Main Camera에 끌어놓는다. 4. 카메라가 따라다닐 오브젝트를 메인카메라의 인스펙터안에 있는 Smooth Follow 안의 Target에 드래서해서 놓는다. ●프리팹(Prefab) - 프리탭은 오브젝트의 원본은 따로 저장해두고 오브젝트가 필요할 때마다 원본의 정보를 사용해서 복사본을 만드는 것이다. 오브젝트를 단순 복사하는 것보다 관리도 편하고 컴퓨터에 부담도 덜 준다. ●프리팹 만들기 1. 프로젝트 탭에서 우클릭->create->Prefab을 누른다. 2. 하이어라키에 있는 오브젝트를 프로젝트탭에 만든 Prefab에 드래그한다. 프리팹으로 등.. 2012. 8. 28.
유니티(unity) 3D 키보드 입력으로 오브젝트 움직이기 ●유니티는 오브젝트를 제어하는 키를 Horizontal,Fire 등으로 부른다. Edit->Project Settings->Input에 들어가면 어떤 키가 할당되있는지 확인할 수 있다. ●다음과 같은 스크립트를 만든다. 아래 스크립트는 오브젝트를 wsad로 상하좌우로 움직이게 하는 스크립트이다. move.js #pragma strict var speed=10; function Start () { } function Update () { var move=speed*Time.deltaTime; var ver=Input.GetAxis("Vertical"); var hor=Input.GetAxis("Horizontal"); transform.Translate(Vector3.forward*ver*move); tr.. 2012. 8. 27.
유니티(unity) 3D 리지드바디(Rigid body)로 오브젝트 움직이기 ●리지드 바디(RigidBody) 추가하기 - Plane오브젝트와 Cube오브젝트를 만들고 Cube오브젝트를 클릭한 상태에서 아래 그림처럼 RigidBody를 선택한다. 그리고 나서 ▶(플레이버튼)을 누르면 Cube가 아래로 떨어진다. ●RigidBody란 오브젝트에 물리적인 특성을 부여하는 컴포넌트이다. 외부에서 힘을 주어 이동시키는 오브젝트는 반드시 리지드바디 컴포넌트를 추가해야한다. ● Mass - 질량. 질량이 작을수록 더 빨리 움직이고, 더 멀리 움직인다. Drag - 저항. 이 값이 크면 속도가 떨어진다. Angular Drag - 회원 운동 저항. 이 값이 0이면 한없이 굴러간다. Use Gravity - 중력 사용 여부 Is Kinematic - 관절 운동 처리 여부 Collision De.. 2012. 8. 23.
반응형