2012.03.16 10:56
일단 간단한 화면 출력은 나중에 하기로 하고..(사실 이건 웹상에 많이 있던..)

먼저 물리적 특성을 갖는 물체를 만들고, 이 물체에 이미지를 적용하는것을 테스트하겠다.

 1. 이미지가 들어있는 강체 만들기
 

이미지를 표시할 객체인 Sprite와 물리적 특성을 가지는 Body를 가지고 있어야 한다.
Sprite에 이미지를 넣을떈,  >BitmapTextureAtlas와 BitmapTextureAtlasTextureRegionFactory를 통해서 넣을 수 있다. (기본적으로 Asset 폴더의 gfx를 이미지 자원의 디렉토리로 잡는다.) 

물리적 특성은  PhysicsFactory.create.... 를 통해서 만들 수 있다.
 (Box, Circle, Line, Polygon, Triangle)

protected ITextureRegion  mFlaskTextureRegion;

///////////////////////////////////////
...
///////////////////////////////////////
// 텍스쳐로 쓸 이미지의 위치를 상대 경로로 잡기 위해 기본 베이스 경로 설정.
BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
// 새로운 비트맵 텍스쳐맵 생성.(최대 사이즈를 64, 64로 잡는데, 2의 제곱수로 넣어줘야 함.)
this.mBitmapTextureAtlas = new BitmapTextureAtlas(this.getTextureManager(), 64, 64, TextureOptions.BILINEAR);

// 두가지로 생성 가능한데, 에니메이션 되는 것, 정적 이미지. 아래는 정적 이미지로 가져온다.
// (에니메이션 되는 것은 가로로 더 그림..)
mFlaskTextureRegion
 = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mBitmapTextureAtlas, this.getAssets(), "flask1.png", 0, 0);

// 왜 final 로 일일이 선언 하는지?
final Sprite face; // 기본적으로 사용하는 화면 표시 객체
final Body body; // 기본적인 강체
final FixtureDef objectFixtureDef = PhysicsFactory.createFixtureDef(1, 0.5f, 0.5f); 
		
face = new Sprite(400, 240, this.mFlaskTextureRegion, this.getVertexBufferObjectManager());
// 새 Sprite를 만드는데, 위치가 400, 240이고, 텍스쳐는 this.mFlaskTextureRegion, 정점버퍼오브젝트매니저를 넣어준다.
// 정점버퍼오브젝트매니저는 연산을 빠르게 하기 위한 처리라고 볼 수 있다.
body = PhysicsFactory.createBoxBody(this.mPhysicsWorld, face, BodyType.DynamicBody, objectFixtureDef);
// 강체를 박스 형태로 만든다. 파라미터로 물리세상을 주고, 아까 만든 Sprite를 표시하는 것으로 주고, 움직일 수 있는 동역학 
// 강체로 셋팅, 위에서 만든 픽스쳐셋팅을 넣어준다. 따라서 물리적 특성을 띈 강체를 만든다.
this.mScene.attachChild(face); // 화면에 표시 하기 위해 Sprite를 장면(Scene)에 넣어준다.
this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(face, body, true, true));
// 물리 세상에 강체를 등록 시켜준다.

더보기




[전체 소스]
 

// Asset/gfx폴더에 이미지가 있어야 함.
// face_box_tiled.png, face_circle_tiled.png, flask1.png
// 사이즈는 BitmapTextureAtlas(this.getTextureManager(), 64, 64, TextureOptions.BILINEAR);
// 에 정의된 64x64를 초과하면 안된다.

더보기

저작자 표시 비영리 변경 금지
신고
Trackback 0 Comment 3
  1. 2012.03.20 21:43 address edit & del reply

    비밀댓글입니다

  2. Favicon of http://estellesiahome.tistory.com BlogIcon 에스텔시아 2012.03.21 19:26 신고 address edit & del reply

    애니메이션이 되는것이라 함은... GIF포멧의 애니메이션 같은 그림을 말하는 거겠치?



티스토리 툴바