2014-02-09 4 views
0

보드 게임과 같은 프로그램을 프로그래밍합니다. 물체는 그 보드에서 미끄러 져 내릴 수 있어야합니다. 즉, 해당 구체화 된 영역 밖에있는 객체의 부분이 더 이상 보이지 않아야 항목이 보드에서 벗어나는 것처럼 보일 수 있습니다.LibGDX : 특정 영역 내에서만 스프라이트 표시

필자가 시도한 것은 스프라이트가 보드에 있는지 여부를 (위치를 확인하여) 확인하고 그렇지 않은 경우 더 이상 렌더링하지 않는 것입니다. 하지만 그 때 스프라이트가 완전히 또는 전혀 표시되지 않기 때문에

) 1) 나쁘다.

2) unegant.

위에서 설명한 내용을 달성하기위한 우아한 방법은 무엇입니까? 스프라이트 대신 이미지를 사용하고 화면의 일부인 뷰포트가있는 다른 스테이지를 가지고있을 수 있습니까? 그렇다면, 어떻게해야하는지에 대한 약간의 설명에 대해 기쁘게 생각합니다.

+0

항상 모든 개체를 완벽하게 렌더링하고 마지막에는 보드 주변에 테두리/프레임/배경을 렌더링합니다. 따라서 보드의 외부에있는 끝 부분에있는 객체의 부분을 덮으시겠습니까? – noone

+0

나는 위어라고 생각 하겠지만, 그다지 우아하지는 않지, 그렇지? – tomet

답변

4

클리핑을 사용할 수 있습니다. 이것이 기본적으로하는 일은 직사각형 영역을 스프라이트 배치와 연관 지어 정의하는 것입니다. 가위를 적용하면 스프라이트 배치에 지정된 사각형의 내부 영역 만 그려집니다. (버전 0.9.9 전에 ) 위키에서

예제 코드 :

Rectangle scissors = new Rectangle(); 
Rectangle clipBounds = new Rectangle(x,y,w,h); 
ScissorStack.calculateScissors(camera, spriteBatch.getTransformMatrix(), clipBounds, scissors); 
ScissorStack.pushScissors(scissors); 
spriteBatch.draw(...); 
spriteBatch.flush(); 
ScissorStack.popScissors(); 

출처 : https://github.com/libgdx/libgdx/wiki/Clipping%2C-with-the-use-of-scissorstack

-

편집 : LibGDX 버전 0.9.9에 대한 , 함수 calculateScissors의 매개 변수가 변경된 것 같습니다. NathanSweet은 어떻게 작동하는지() 알아 낸 다음 위에서 언급 한 기능이 다시 도입되도록 도와주었습니다 (CalculateScissors Less Parameters).

ScissorStack.calculateScissors(camera, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), batch.getTransformMatrix(), clipBounds, scissor); 
관련 문제