我使用位图字体在屏幕上渲染游戏fps但是没有大小的方法.这对我来说是一个问题,因为我的相机视口大小非常小,因此渲染时的文本很大且像素化.
font.draw(batch, Float.toString(Gdx.graphics.getFramesPerSecond), x, y);
Run Code Online (Sandbox Code Playgroud) 我使用libgdx做了一个游戏,它之前在桌面和android上运行良好.我不确定它是否因为我开始使用box2d物理引擎和liquidfun粒子,基本上发生的是,当我点击我的游戏时它开始加载然后加载它应该去游戏屏幕,但它崩溃然后说"不幸的是,myGame已经停止了".
错误信息:
E/AndroidRuntime: FATAL EXCEPTION: GLThread 3764
Process: com.nivekbryan.puffypuff, PID: 8416
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/badlogic/gdx/physics/box2d/World;
Run Code Online (Sandbox Code Playgroud)
我按照这个设置教程介绍了如何移植liquidfun库,它从2014年开始有点老了.游戏运行Ok作为桌面应用程序.
这是我的build.gradle文件(依赖项),可能是什么问题?为什么作为桌面应用程序而不是作为Android应用程序?
buildscript {
repositories {
mavenLocal()
mavenCentral()
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
jcenter()
}
dependencies {
classpath 'de.richsource.gradle.plugins:gwt-gradle-plugin:0.6'
classpath 'com.android.tools.build:gradle:2.0.0'
classpath 'com.mobidevelop.robovm:robovm-gradle-plugin:2.1.0'
}
}
allprojects {
apply plugin: "eclipse"
apply plugin: "idea"
version = '1.0'
ext {
appName = "Puffy Puff"
gdxVersion = '1.9.3'
roboVMVersion = '2.1.0'
box2DLightsVersion = '1.4'
ashleyVersion = '1.7.0'
aiVersion = '1.8.0'
admobVersion = '8.3.0'
}
repositories …Run Code Online (Sandbox Code Playgroud) 我需要获取图像/元素的高度,这就是我所做的:
mounted() {
this.infoHeight = this.$refs.info.clientHeight + 'px';
}
Run Code Online (Sandbox Code Playgroud)
当我在热重载时保存它时,它会工作,它会获得正确的高度,但是当我刷新页面时,它会返回较小/错误的值。我也试了一下created(),也是一样的。在其他情况下,它甚至不返回任何内容。
更新(临时解决方案?)
mounted() {
setTimeout(() => this.infoHeight = this.$refs.info.clientHeight + 'px', 100);
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用window.addEventListener('load', () => //todo),但在某些组件上它有效,而在其他组件上则无效。
我将我的精灵旋转90度,我想对我的矩形做同样的事情,以便能够将它们用于碰撞,但这种rotate()方法在矩形上不可用.
这就是我做的:
treeSpr=new Sprite(new Texture(Gdx.files.internal("tree.png")));
treeSpr.setPosition(250,700);
treeSpr.rotate(90f);
//Rectangle
treeRect=new Rectangle(treeSpr.getX(),treeSpr.getHeight(),
treeSpr.getWidth(),treeSpr.getHeight());
Run Code Online (Sandbox Code Playgroud) 我有一个圆形动态的身体,模拟一个弹跳球,我将恢复原状设置为2,它只是失去控制,它不会停止上下弹跳.所以我想使用阻尼减慢球的线性或角速度.
if(ball.getLinearVelocity().x >= 80 || ball.getLinearVelocity().y >= 80)
ball.setLinearDamping(50)
else if(ball.getLinearVelocity().x <= -80 || ball.getLinearVelocity().y <=-80)
ball.setLinearDamping(50);
Run Code Online (Sandbox Code Playgroud)
当球的线速度达到80或更高时,我将其线性阻尼设置为50,然后它就会超级慢动作.有人可以解释一下阻尼如何工作以及如何.setLinearDamping()正确使用方法,谢谢.
编辑
这就是我所做的,如果线速度超出了我的需要,它将球线性阻尼设置为20,如果不总是设置为0.5f.这会产生并影响重力不断变化的瞬间变化.但是@minos23的答案是正确的,因为它更自然地模拟球,你只需要设置你需要的MAX_VELOCITY.
if(ball.getLinearVelocity().y >= 30 || ball.getLinearVelocity().y <= -30)
ball.setLinearDamping(20);
else if(ball.getLinearVelocity().x >= 30 || ball.getLinearVelocity().x <= -30)
ball.setLinearDamping(20);
else
ball.setLinearDamping(0.5f);
Run Code Online (Sandbox Code Playgroud) 我正在使用 intellij idea ide,当我尝试将 libgdx 项目作为桌面应用程序运行时,我收到此消息。
Exception in thread "main" java.lang.ClassNotFoundException: com.nivekbryan.labirint.desktop.DesktopLauncher
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:122)
Run Code Online (Sandbox Code Playgroud) 我正在使用Libgdx进行游戏,我需要知道用户是否正在使用两根手指以及是否将它们放置在正确的位置.一根手指应位于屏幕右侧,另一根手指应位于屏幕左侧.
我知道如何检测libgdx中的滑动,但是当我向某个方向滑动时遇到问题,顺便说一句,我使用的是GestureListener.
if(velocityX > 0) {
System.out.println("right");
}else if(velocityY > 0 && velocityX > 0){
System.out.println("down");
}else if(velocityY < 0){
System.out.println("up");
}
Run Code Online (Sandbox Code Playgroud)
基本上发生的是当我向上或向下滑动时,它有时打印出"正确".我想要发生的是检测指针指向哪个方向,因为如果你使用velocityX和velocityY然后你沿对角线滑动它将检测向上和向右或向下和向右的两个方向.在我的情况下,如果用户沿对角线滑动,则应仅将其检测为向上或向下手势,并且不应包括向左和向右滑动.
更新:
if(Math.abs(velocityY) > Math.abs(velocityX)){
if(velocityY > 0)
System.out.println("down");
else if(velocityY < 0)
System.out.println("up");
}else if(Math.abs(velocityX) > Math.abs(velocityY))
if(velocityX > 0)
System.out.println("right");
Run Code Online (Sandbox Code Playgroud)
它基本上打印出比另一个方向更大的方向
我已经创建了一个jar文件,但每当我点击它时都没有任何反应,它不会打开.所以我做的是去项目结构 - >工件 - > jar - >从模块到依赖 - >然后选择桌面模块和DesktopLauncher作为主类然后保存,然后构建工件.jar文件甚至没有打开,有没有办法以不同的方式创建一个jar文件?