gpt4 book ai didi

java - Libgdx 补间问题

转载 作者:太空宇宙 更新时间:2023-11-04 13:51:03 27 4
gpt4 key购买 nike

我正在创建一个游戏并尝试设置启动屏幕。

每当我使用 sprite.draw 方法渲染我想要补间的 Sprite 时,如下所示:

@Override
public void render(float delta)
{
Gdx.gl20.glClearColor(0.2F, 0.5F, 1F, 1F);

Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT);

tm.update(delta);

cam.update();

sb.setProjectionMatrix(cam.combined);

sb.begin();

Assets.splash_spr_bg.draw(sb);

sb.end();

}

补间效果很好,但我只能在屏幕上看到 1/4 的图片,它完全不合适。

每当我尝试使用此代码来通过使用 spritebatch 绘制 Sprite 来渲染 Sprite 时,如下所示:

@Override
public void render(float delta)
{
Gdx.gl20.glClearColor(0.2F, 0.5F, 1F, 1F);

Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT);

tm.update(delta);

cam.update();

sb.setProjectionMatrix(cam.combined);

sb.begin();

sb.draw(Assets.splash_spr_bg, 0, 0);

sb.end();

}

我可以看到很棒的背景、很棒的质量、正确的尺寸和位置等等。然而,补间根本不起作用;什么也没发生。

为什么这不起作用?我该如何修复它?

<小时/>

这是一些其他代码。

TweenHandler 类的初始化:

package com.heavenapps.jumpdodge.handlers;

import com.badlogic.gdx.graphics.g2d.Sprite;

import aurelienribon.tweenengine.TweenAccessor;

public class TweenHandler implements TweenAccessor<Sprite>
{

public static final int ALPHA = 1;

@Override
public int getValues(Sprite target, int tweenType, float[] returnValues)
{
switch(tweenType)
{
case ALPHA:
returnValues[0] = target.getColor().a;
return 1;
default:
return 0;
}
}

@Override
public void setValues(Sprite target, int tweenType, float[] newValues)
{
switch(tweenType)
{
case ALPHA:
target.setColor(1, 1, 1, newValues[0]);
break;
}
}

}

Sprite /纹理的初始化:

 package com.heavenapps.jumpdodge.handlers;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.Texture.TextureFilter;
import com.badlogic.gdx.graphics.g2d.Sprite;

public class Assets
{

public static Texture splash_tex_bg;

public static Sprite splash_spr_bg;

public static void init()
{
// Splash Screen

splash_tex_bg = new Texture(Gdx.files.internal("Splash Screen/Background.png"));

splash_tex_bg.setFilter(TextureFilter.Linear, TextureFilter.Linear);

splash_spr_bg = new Sprite(splash_tex_bg);

splash_spr_bg.setOrigin(splash_spr_bg.getWidth() / 2, splash_spr_bg.getHeight() / 2);

splash_spr_bg.setPosition(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());

splash_spr_bg.setColor(1, 1, 1, 0);


}

}

补间的用法:

public void fadeSplashScreen()
{
Tween.to(Assets.splash_spr_bg, TweenHandler.ALPHA, 2F).target(1).ease(TweenEquations.easeInBounce).start(tm);
}

最佳答案

如果您想使用第一种方法绘制 Sprite ,则需要设置 Sprite 的位置。 (sprite.draw(spriteBatch))。如果您想使用 Sprite 的颜色(由补间控制),则需要使用第一种方法。

看起来你确实给了背景 Sprite 一个初始位置,但你把它放在了屏幕之外。所以改变一下

splash_spr_bg.setPosition(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());

splash_spr_bg.setPosition(0, 0);

您展示的第二种方法(spriteBatch.draw(sprite, x, y))将其绘制在正确的位置的原因是,这种绘制方法忽略了它是一个 Sprite 的事实,而只是在您给它的任何位置绘制 Sprite 拥有的纹理区域。并且此方法不会使 Sprite 褪色,因为它忽略了它是 Sprite (有颜色)的事实。

关于java - Libgdx 补间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30269218/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com