간단한 태양 광 시스템 시뮬레이터를 쓰고 있습니다. 이것은 첫 번째 libgdx 프로젝트입니다. 저는 메인 메뉴에 스테이지와 액터를 사용하고 있으며 특히 터치 이벤트 처리에 매우 편리합니다. 하지만 ... 예제를 보면 아무도 실제 게임 논리에서 배우를 사용하지 않는다는 것을 알 수 있습니다. 나는 배우를 행성 클래스의 부모로 사용해야하거나 그냥 내 자신의 클래스 토르를 써야한다면 방황한다. 행성은 접촉 할 수 없으며 프레임 사이에서만 움직입니다. 따라서 MoveBy 동작의 세 번째 매개 변수는 프레임 사이의 시간이어야합니다. 그건 죄수입니다. 배우를 사용하는 데 필요한 전문가는 무엇입니까?libgdx에서 액터를 사용해야 할 때? 죄수 및 찬성이란 무엇입니까?
답변
액터의 주된 장점은 액션, 히트 테스트 및 터치 이벤트 및 액터 그룹입니다.
게임 로직에 필요한 경우 작업을 수행하면 빠르고 쉬운 트위닝이 가능합니다.
언제든지 true를 반환하는 첫 번째 액터를 반환하기 위해 stage.hit (x, y)를 호출 할 수 있습니다 (일반적으로 x, y, 너비, 높이로 경계를 확인). 이 액터 나 null을 반환하면 배우의 히트 메소드를 반복하여 히트 배우를 계속 찾을 수 있습니다. 액터가 히트되어 있지 않은 경우는 null가 리턴됩니다.
무대는 스테이지의 터치 이벤트에 사용됩니다. 액터의 터치 메소드는 로컬 좌표를 전달하고 스테이지는 객체의 중첩을 처리합니다. 배우가 다른 배우를 포함하여 다른 배우가 touchDown을받지 않아야하는 경우, 커버하는 배우에게 true를 반환하여 "아래"배우의 touchDown 호출을 중지합니다. 또한 Actor의 touchUp이 호출되도록 true를 반환하는 액터에 'focus'를 설정합니다.
전체 액터 그룹에 대해 액션, 터치 이벤트 등을 수행하기 위해 액터를 그룹으로 묶을 수 있습니다.
일부 단점 : 액터는 기능을 다소 제한하는 단계가 필요합니다. 많은 코더는 scene2d 액션 (예 : box2d)보다는 게임 객체 상태를 결정하는 데 다른 로직을 사용합니다. 게임 객체에 액터를 사용하는 경우 UI와 게임 월드에 각각 하나씩 두 개의 스테이지가 필요합니다. 그들을 사용하지 않으면 어쨌든 자신의 SpriteBatch 및 카메라를 사용하고있을 것입니다. 액터에는 추상 Draw 메서드 만 있으므로 그리기 논리를 만들어야합니다. TextureRegion 또는 Sprite는 액터의 비공개 필드로 유지할 수 있습니다. 독자적인 업데이트 로직을 사용하려면, 행위 (float delta) 메소드를 오버라이드하여 델타 시간을 얻습니다 (액션을 사용하는 경우 super.act (delta) 호출).
자신 만의 논리를 가지고 있고 Stage가 제공해야하는 것을 많이 사용하지 않으면 리소스를 절약하고 응용 프로그램 별 솔루션을 구상하십시오. 필요한 기능을 제한하지 않고 일부 전문가를 사용할 수 있다면 게임 논리의 두 번째 스테이지로 이동하십시오.
Scene2D와 box2d를 모두 사용할 수 있지만, 어색하게 느껴질 수도 있습니다. 일반적으로 완벽하게 가능하며 실제로하고 있습니다. 동적 객체의 경우 물리 모델에서 액터의 위치를 간단히 파생시킵니다. 물론 이것은 모션이 물리에서 배우로 이동하기 때문에 '액션'은 다소 의미가 없다는 것을 의미합니다. 그러나 입력 처리, 이벤트 시스템, 카메라 처리 및 좌표 매핑은 무료입니다. 물리적 본문이없는 시각적 요소 (예 : 장착 된 항목, 효과 스프라이트 등)에도 작업을 계속 사용할 수 있습니다. – Matthias
- 1. 중간 점으로 libgdx에서 이미지 액터를 회전하는 방법은 무엇입니까?
- 2. 스레드를 사용해야 할 때
- 3. pushScene과 replaceScene을 사용해야 할 때?
- 4. 스프링 WebMVC의보기 및/또는 MessageConverters를 사용해야 할 때?
- 5. 내가 사용해야 할 조인은 무엇입니까?
- 6. libgdx에서 세계에 경계 설정
- 7. ARC는 __block을 사용해야 할 때 알려 줄까요?
- 8. android : onStart(), onStop()을 사용해야 할 때?
- 9. 대체 파이썬 배포판을 사용해야 할 때?
- 10. WMI를 사용할 때 라이브러리에서 사용해야 할 내용
- 11. 유닉스 소켓 : bind() 함수를 사용해야 할 때?
- 12. 우리는 instanceof를 사용해야 할 때와하지 않을 때
- 13. 여러 방향을 다룰 때 사용해야 할 모범 사례는 무엇입니까?
- 14. 레일스에서 스프라이트 생성기로 사용해야 할 것은 무엇입니까?
- 15. 액터를 사용할 때 사례 클래스 정의 위치
- 16. 도메인 개체를 serialize하려면 XamlWriter.Save()를 사용해야 할 때?
- 17. 죄수 기능 문제
- 18. 언제 파이프를 사용 하는가? 공유 메모리를 사용해야 할 때
- 19. libgdx에서 램프를 시뮬레이트하는 방법은 무엇입니까?
- 20. 유스 케이스에서 액터를 확장 할 수 있습니까?
- 21. 인 텐트를 사용해야 할 때 createChooser 란 무엇입니까? 이 방법으로 내가 할 수있는 일은 무엇입니까?
- 22. 스칼라에서 액터를 사용할 때 동시성을 제한하는 방법은 무엇입니까?
- 23. 데이터베이스 디자인에서 1 대 1 관계를 사용해야 할 때?
- 24. HTTPS를 사용해야 할 때 Apache CXF가 HTTP로 되돌아갑니다.
- 25. Android : 서비스 대 싱글 톤을 사용해야 할 때?
- 26. Ruby에서 "require"보다는 "load"를 사용해야 할 때?
- 27. 액터를 사용한 디자인 패턴
- 28. libgdx에서 액터에 손을 대는시기를 감지하는 방법은 무엇입니까?
- 29. 사용해야 할 대상 : FogBuz + Beanstalk 또는 Assembla
- 30. 데이터베이스에서 액터를 초기화하는 가장 좋은 방법은 무엇입니까
많은 libGDX 예제가 Stage + Actor 지원을 선행한다고 믿습니다. 그래서 그 사용 이유를 설명 할 수 있습니다. –