将 box2dLight 附加到 scene2d.Actor
Attaching box2dLight to scene2d.Actor
作为游戏的一部分,我正在舞台上移动汽车并尝试将前灯打开。我在 CAR 上设置操作,以便 CAR 的位置更新将由 scene2d.actions.Actions 处理。这是我用来设置灯光的代码:
rayHandler.setCombinedMatrix(stage.getCamera().combined);
rayHandler.useCustomViewport(viewport.getScreenX(), viewport.getScreenY(),
viewport.getScreenWidth(), viewport.getScreenHeight());
coneLight = new ConeLight(rayHandler, 50, Color.YELLOW, 150, 400, 150,0,45);
但问题是,它需要灯必须定位的位置,现在要获得汽车前灯的位置很棘手(或者我遗漏了全世界都知道的东西)因为汽车可以朝任何方向前进,有什么方法可以将光附加到演员身上吗?或者我们应该总是使用
来计算光的位置
有点像
actor.getX() + cosDeg(actor.direction())*length;
例如看图片
获取精灵顶点的位置解决了问题
import static com.badlogic.gdx.graphics.g2d.Batch.X2;
import static com.badlogic.gdx.graphics.g2d.Batch.X3;
import static com.badlogic.gdx.graphics.g2d.Batch.Y2;
import static com.badlogic.gdx.graphics.g2d.Batch.Y3;
... #somewhere in render method.
coneLight.setPosition(sprite.getVectors()[X2], sprite.getVectors()[Y2]);
作为游戏的一部分,我正在舞台上移动汽车并尝试将前灯打开。我在 CAR 上设置操作,以便 CAR 的位置更新将由 scene2d.actions.Actions 处理。这是我用来设置灯光的代码:
rayHandler.setCombinedMatrix(stage.getCamera().combined);
rayHandler.useCustomViewport(viewport.getScreenX(), viewport.getScreenY(),
viewport.getScreenWidth(), viewport.getScreenHeight());
coneLight = new ConeLight(rayHandler, 50, Color.YELLOW, 150, 400, 150,0,45);
但问题是,它需要灯必须定位的位置,现在要获得汽车前灯的位置很棘手(或者我遗漏了全世界都知道的东西)因为汽车可以朝任何方向前进,有什么方法可以将光附加到演员身上吗?或者我们应该总是使用
来计算光的位置有点像
actor.getX() + cosDeg(actor.direction())*length;
例如看图片
获取精灵顶点的位置解决了问题
import static com.badlogic.gdx.graphics.g2d.Batch.X2;
import static com.badlogic.gdx.graphics.g2d.Batch.X3;
import static com.badlogic.gdx.graphics.g2d.Batch.Y2;
import static com.badlogic.gdx.graphics.g2d.Batch.Y3;
... #somewhere in render method.
coneLight.setPosition(sprite.getVectors()[X2], sprite.getVectors()[Y2]);