我正在测试Libgdx和Scene2d.我希望这个小程序能够显示一个标志,但它只画了一个黑屏.知道我错过了什么吗?
public class MyGame implements ApplicationListener {
private Stage stage;
@Override
public void create() {
stage = new Stage(800, 800, false);
Gdx.input.setInputProcessor(stage);
MyActor actor = new MyActor();
stage.addActor(actor);
}
@Override
public void render() {
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
stage.act(Gdx.graphics.getDeltaTime());
stage.draw();
}
@Override
public void dispose() {
stage.dispose();
}
@Override
public void resize(int width, int height) {
stage.setViewport(800, 800, false);
}
}
public class MyActor extends Actor {
Sprite sprite;
public MyActor() {
sprite = new Sprite();
sprite.setTexture(new Texture("data/libgdx.png"));
setWidth(sprite.getWidth());
setHeight(sprite.getHeight());
setBounds(0, 0, getWidth(), …Run Code Online (Sandbox Code Playgroud) 从manifest生成R.java时出错
这是什么意思?以及我如何解决它?
[ERROR] Error generating R.java from manifest
[ERROR]:Project failed to build after 937ms
Run Code Online (Sandbox Code Playgroud) 我有一个问题可以改变渲染方法的频率.我找到了这个:
默认情况下,在libgdx中,呈现线程会连续调用ApplicationListener类的render()方法,其频率取决于您的硬件(每秒30-50-80次).我用
Gdx.graphics.setContinuousRendering(false);
Run Code Online (Sandbox Code Playgroud)
在我的create方法中,如果用户触摸屏幕,渲染就会停止并启动.但我希望以每秒1次的速度减慢频率.是否可以解决此问题,或者我只能使用render方法的默认设置.我搜索但没有找到解决方案.感谢帮助.
我想知道如何使用MoveToAction(或任何方法)将stage2d窗口定位在舞台之外.我希望菜单可以滑入和滑出.
我的舞台和我的皮肤存储在我的世界级.
这些方法现在工作正常,但根本没有动画:
Window window = new Window("NoteBook", world.skin);
...
public void closeBook() {
window.remove();
}
public void openBook() {
world.stage.addActor(window);
}
Run Code Online (Sandbox Code Playgroud)
这就是我试图更新这些函数以允许动画的方法.这里的窗口已经在init期间添加到舞台一次,因此这些方法只处理动画.
public void closeBook() {
MoveToAction action = new MoveToAction();
action.setPosition(-200, -200); // somewhere off screen
action.setDuration(0.5f);
window.addAction(action);
}
public void openBook() {
MoveToAction action = new MoveToAction();
action.setPosition(0, 0); // original location
action.setDuration(0.5f);
window.addAction(action);
}
Run Code Online (Sandbox Code Playgroud)
这似乎部分有效,因为它确实为窗口的运动设置了动画,但它停在屏幕的边缘并且不会突破它.我已经尝试调整我的舞台的视口尺寸,但它仍然始终停在边缘.
所以问题是,如何在舞台外(或看似外面)放置一个scene2d窗口?
假设我想在 Steam 和 Epic Games 上发布我的游戏。两者都有一个包含某些服务(例如匹配)的 SDK。
我不想制作两个项目并基本上维护它们只是为了能够实现这一目标。如何根据我正在构建的版本(Steam 版本或 Epic Games 版本)激活/停用某些代码。我读到了 #if 指令,但这些指令似乎仅在检查构建目标平台(Android 等)时才起作用。
以下代码显示了一个慢慢旋转并显示的圆环:
package com.objloader.example;
import ...
public class ObjLoaderProg implements ApplicationListener{
String torus;
Mesh model;
private PerspectiveCamera camera;
@Override
public void create() {
InputStream stream=null;
try {
stream = new FileInputStream(Gdx.files.internal("data/torus.obj").path());
} catch (FileNotFoundException e) {
e.printStackTrace();
}
model = ObjLoader.loadObj(stream, true);
Gdx.gl.glEnable(GL10.GL_DEPTH_TEST);
Gdx.gl10.glTranslatef(0.0f,0.0f,-3.0f);
}
@Override
public void dispose() {
}
@Override
public void pause() {
}
protected int lastTouchX;
protected int lastTouchY;
protected float rotateZ=0.01f;
protected float increment=0.01f;
@Override
public void render() {
Gdx.gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); …Run Code Online (Sandbox Code Playgroud) 我在Libgdx框架中制作平台游戏.我想实现跳到我的角色的能力.我使用简单的公式:
speed += acceleration * delta_time
r += speed * delta_time
Run Code Online (Sandbox Code Playgroud)
它运行良好,但仅适用于每秒恒定帧数.FPS越低,我的角色越低.我不知道这种行为的原因是什么,跳跃的高度应该是相同的:/我的代码片段:
delta_time=Gdx.graphics.getDeltaTime();
if(input.getUpArrow()){
if(is_in_air==false){
is_in_air=true;
speed_y=speed_y_0;
}
}
if(is_in_air==true){
speed_y-=acceleration*delta_time;
}
else{
speed_y=0;
}
x+=speed_x*delta_time;
y+=speed_y*delta_time;
Run Code Online (Sandbox Code Playgroud)
这里有一个插图(黑点是字符位置):http: //i.imgur.com/tfSTM.jpg
我这样定义了新演员:
class MyActor extends Image
{
Texture texMyActor;
public MyActor()
{
super.setTouchable(Touchable.enabled);
texMyActor = new Texture("data/myActor.png");
addListener(new InputListener()
{
public boolean touchDown(InputEvent event, float x, float y,
int pointer, int button)
{
System.out.println("down");
return true;
}
public void touchUp(InputEvent event, float x, float y,
int pointer, int button)
{
System.out.println("up");
}
});
}
@Override
public void act(float delta)
{
super.act(delta);
}
@Override
public void draw(SpriteBatch batch, float parentAlpha)
{
batch.draw(texMyActor, 200, 200);
}
}
Run Code Online (Sandbox Code Playgroud)
我还添加了演员到舞台,注册舞台作为当前输入处理器.然后我调用stage.act(deltaTime)和stage.draw().我看到我的演员,但它没有响应输入我的代码有什么问题?:?:
我正在使用libgdx和AdMob.我无法将广告置于屏幕底部的中心位置.在当前的设置中,我将它放在屏幕的左下角,但它不会居中.
我的MainActivity中的代码
// Add the AdMob view
RelativeLayout.LayoutParams adParams =
new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
adParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
adParams.addRule(RelativeLayout.CENTER_IN_PARENT);
layout.addView(adView, adParams);
Run Code Online (Sandbox Code Playgroud) 我使用 box2d 并想在屏幕上添加一些按钮。我认为最简单的方法是使用 scene2d 作为按钮。是否有可能将这两者结合起来,如果是的话,该怎么做?我是 box2d 的新手,我看过的所有教程都没有任何这方面的示例。