Libgdx,actor 中的视口

Libgdx, viewport in actor

是否可以将视口放在自定义actor中,这样视口的宽度和高度就是actor的宽度和高度,渲染将从actor位置开始,而不是从(0,0)开始。

Stage是二维场景图。它具有层次结构,这意味着添加到 GroupActors 应该只在给定的 Group 中呈现。移动组也会将所有子级移动到里面。通过 clipBegin()clipEnd 你还可以 "cut off" actor 之外的所有东西,这也是 Viewport 在设置 glViewport 时所做的事情.

因此,无论您尝试做什么,您可能都不需要额外的视口。如果您仍然认为您需要一个,您可以创建一个 ActorViewport extends Viewport 来获得一个 Actor 字段。您必须覆盖 apply(boolean) 方法并同步 worldWidth、worldHeight、screenX、screenY、screenWidth 和 screenHeight 变量以匹配 Actor。请记住,每次演员更改时都必须更新视口,在最坏的情况下每帧都会更新。

感谢没有人解决方案非常简单:

public class ActorViewport extends Viewport
{
     private Actor m_actor;

     public ActorViewport(Actor actor, int worldWidth, int worldHeight, Camera camera)
     {
          m_actor = actor;
          setWorldSize(worldWidth, worldHeight);
          setCamera(camera);
     }

     @Override
     public void update(int screenWidth, int screenHeight, boolean centerCamera)
     {
          setScreenPosition((int)m_actor.getX(), (int)m_actor.getY());
          setScreenSize((int)m_actor.getWidth(), (int)m_actor.getHeight());
     }
}