最近我一直在尝试学习如何使用 Box2D 灯。我已经尝试将它们实现到我的一个简单游戏中。一切正常并且看起来不错(在 PC 上),直到我在手机上运行它。灯光看起来完全不同,我什至不知道如何描述它。看起来我正在经历某种粘液,而不是良好和平滑的灯光效果。我注意到的另一件事是,当我尝试用 OBS 录制它时,它看起来和我的手机上的一样。我在我兄弟的手机上试过了,令我惊讶的是,它看起来和我的电脑上一模一样。如果有人遇到过这种行为或者可能知道它可能是由什么引起的,我将不胜感激,即使是如何称呼它的名字。改变光线的数量似乎没有多大作用。我也尝试在兄弟的手机上录制它,但它的行为方式与 PC 录制的方式相同。
我的手机(小米mi mix 3)
我哥的手机(华为P10 lite)
它在我的手机上的外观: https ://youtu.be/fq_J6A95D2Y
这是它在 PC 上的外观屏幕,光线的“OutLines”仍然可见但要少得多: https ://imgur.com/a/D6UHUVp
以下是与灯光相关的代码:
`RayHandler.useDiffuseLight(true);
rayHandler = new RayHandler(world);
rayHandler.setAmbientLight(0.1f,0.1f,0.1f,0.2f);
rayHandler.setCulling(true);`
如果没有 useDiffuseLight,它看起来会更糟。剔除似乎没有做任何与我的问题有关的事情。
lightArray = new Array<>();
int rays = 2048;
int distance = 8;
Color color = new Color(0.5f,0.5f,0.5f,1);
PointLight light1 = new PointLight(context.getRayHandler(),rays,color,distance,3,3);
PointLight light2 = new PointLight(context.getRayHandler(),rays,color,distance,3,13);
PointLight light3 = new PointLight(context.getRayHandler(),rays,color,distance,6,3);
PointLight light4 = new PointLight(context.getRayHandler(),rays,color,distance,6,13);
lightArray.add(light1);
lightArray.add(light2);
lightArray.add(light3);
lightArray.add(light4);
for(Light light:lightArray){
light.setSoftnessLength(1);
light.setSoft(true);
}
光线的数量似乎并没有改变与我的问题相关的任何事情。(我已经尝试过使用 64,128,1024,4096 并且“输出线看起来仍然相同”)。关闭柔软度不会改变与我的问题相关的任何内容。
playerLight = new PointLight(context.getRayHandler(),2048,new
Color(0.4f,0.4f,0.4f,1f),5,playerBody.getPosition().x,playerBody.getPosition().y);
playerLight.attachToBody(playerBody);
rayHandler.setCombinedMatrix(context.getCamera());
rayHandler.updateAndRender();
这是在 shapeRenderer 和 SpriteBatch 绘制完所有内容之后调用的。