2011-09-04 3 views
4

libgdx에서 애니메이션을 적용하는 쉬운 방법이 있는지 궁금합니다. 플래시의 Tween 라이브러리와 마찬가지로 텍스처의 길이와 끝 위치를 지정할 수있는 API에 대해 생각하고 있습니다.Animation in libgdx

google에서 검색 한 결과 가장 가까운 점은 libgdx에있는 Animation 클래스가 사용자가 각 키 프레임의 텍스처를 지정해야한다는 것입니다. 그들은 그리드에 배치하는 경우

new Animation(0.5f, texture1, texture2, texture3); 

답변

11

당신은, 텍스처에 대한 텍스처 지역의 무리를 얻을 수 TextureRegion 번호 분할 (질감, tileWidth, tileHeight)를 사용할 수 있습니다. 느슨한 이미지 묶음에 TexturePacker를 사용하여 텍스쳐를 단일 텍스처로 패킹 한 다음 TextureAtlas로로드 할 수도 있습니다. 이것은 더 나은 포장을 위해 각 프레임에서 공백을 제거 할 수 있고, 앨리어싱과 같은 멋진 작업을 수행 할 수있는 이점이 있습니다 (두 프레임이 동일하면 한 번만 압축됩니다). anim_1.png, anim_2.png 등의 프레임 이미지의 이름을 지정하면 프레임 번호를 기반으로 정렬 된 목록으로 "anim"이라는 텍스처 영역을 모두 만들 수 있습니다.

또한 libgdx의 Animation 클래스는 단순합니다. 그것이 당신의 필요를 충족시키지 못하면 자신의 것을 쓰는 것을 주저하지 마십시오. 애니메이션 클래스는 약 20 줄의 코드입니다.

2

원하는 애니메이션의 종류에 따라 다릅니다. 다른 이미지를 기반으로 한 애니메이션 인 경우 다른 텍스처 영역이있는 Animation 클래스를 사용해야합니다. 그러나 이동 보간을 기반으로하는 애니메이션을 원한다면 Flash와 같이 트위닝 라이브러리를 사용해야합니다.

Libgdx에는 보정 기능이있는 간단한 보간을 만들 수있는 인터폴 레이터 도우미가 내장되어 있습니다. 플래시와 같은 완전한 트위닝 엔진을 원하면 Java Universal Tween Engine을 살펴보십시오.

0

libgdx에서의 애니메이션은 쉽습니다. 내가하는 일은 많은 텍스처 또는 텍스처 영역을 두는 대신 Animation 매개 변수에서 텍스처 또는 텍스처 영역의 배열을 사용하는 것입니다. 그리고 선언 한 후에 애니메이션의 playmode를 다음과 같이 설정합니다 ->animation.setPlayMode(Animation.PlayMode.LOOP); 작동합니다. 이 런 타임 + = 델타 또는 runTime = runTime + delta --> spriteBatch.draw(animation.getKeyFrame(runTime), x, y, width, height);

과 같이 설정된 float runTime 변수를 사용하여 애니메이션을 그립니다.