2014-06-19 5 views
1

많은 스프라이트가있는 레이어가 있습니다. 스프라이트는 레이어 내에서 자체 동작을 수행합니다. 그룹에 변형을 적용하고 싶습니다. 당연히 자녀는 동일한 조정을 수행해야합니다.2d 용 libgdx의 행렬

나는 매트릭스를 찾고 있다고 생각하는데, libgdx에는 그것들이있는 것 같습니다. 그러나 나는 그것을 어떻게 나의 libgdx 스프라이트에 적용 할 수 있는지 이해하지 못한다. 그러나 그것이 내가 필요한 것이 아니라면, 내가 무엇을 필요로합니까?

+0

스프라이트를 변환을 적용하기 전에 그것의 복사본을 만들려면 은 단일 메쉬로 함께 배치하기위한 것이므로 각 행마다 변형을 수정하기 위해 별도의 행렬을 사용하지 않습니다. 설명 된대로 트리의 가지를 변형 할 수있는 부모와 자식의 계층 구조를 만들려면 scene2d를 읽어보십시오. https://github.com/libgdx/libgdx/wiki/Scene2d LibGDX는 변환을 위해 행렬을 사용합니다 메쉬. Matrix3 및 Matrix4 클래스가 있습니다. Sprite 클래스에서는 유용하지 않습니다. – Tenfour04

+0

네, 맞습니다. 나는 Scene2d를 탐구했고 그것이 내가 원하는 것을 많이한다. 그러나 모든 것을 오버 헤드 전환하는 꽤 많은 비트가 있습니다. 이것은 내가 미래에하고 싶은 일이지만, 지금은 빠른 수정이 필요합니다. – Vas

답변

2

그래서 내가 말할 수있는 것부터는 쉬운 해결책이 없다. (지금은 libgdx에 액세스 할 수 없기 때문에 아무것도 테스트하지 않았다.)

번역을 추적하는 것이 필요하면 레이어에 위치 (vector2 또는 기타)를 지정하는 것이 가장 쉽고 스프라이트의 위치를 ​​계산할 때는 레이어의 위치로 오프셋을 설정하십시오.

모든 변환 (회전, 축척 등)에 액세스해야하는 경우 matrix3을 사용하는 것이 가장 좋습니다. matrix3s를 사용하면 변환, 축척, 회전 등을 통해 여러 가지 변형을 추가 한 다음 행렬을 곱하여 변형을 적용 할 수 있습니다.

예를 들어 'object'라는 Sprite 객체를 사용하는 경우 코드는 다음과 유사 할 수 있습니다. 당신이 당신의 위치를 ​​저장하는 Vector2를 사용하는 경우 있도록 벡터 곱셈 기능은, 원래의 벡터를 변경하는 것이

Matrix3 mat3 = new Matrix3(); 
    //do your transformations 
    Vector2 vec2 = new Vector2(object.getX(), object.getY()); 
    vec2.mul(mat3); 
    object.setPosition(vec2.x, vec2.y); 

주, 당신은 아마 당신이 LibGDX에서

+0

좋습니다. 고맙습니다. 이것이 제가 찾고 있던 것입니다. – Vas