0
我正在学习LibGDX进行游戏开发,我的游戏在Box2D上运行的很好,但只剩下一件事,为我的敌人设置加速度,当我尝试这样做时(我添加了float timer = 0;
值,在我的EnemyUserData类创建一个渲染方法和下面的代码添加到它LibGDX设置加速错误
@Override
public void render(float delta, float speed) {
timer += Gdx.graphics.getDeltaTime(); //returns time between two frames
if (timer > 10) { //after 10 seconds
linearVelocity = linearVelocity * 1.1F;
timer = 0; //reset timer
}
}
}
但该计划开始与错误,如抱怨:
Error:(20, 25) Gradle: error: incompatible types: float cannot be converted to Vector2Error:(33, 4) Gradle: error: method does not override or implement a method from a supertypeError:(37, 44) Gradle: error: bad operand types for binary operator '*'
first type: Vector2
second type: float
EnemyUserData类的情况下,你需要更多的信息:
package com.avoidcrashjump.box2d;
import com.avoidcrashjump.Constants;
import com.avoidcrashjump.enums.UserDataType;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.math.Vector2;
/**
* Created by Felipe on 3/1/2016.
*/
public class EnemyUserData extends UserData {
float timer = 0;
float speed = 200f;
private Vector2 linearVelocity;
public EnemyUserData(float width, float height) {
super(width, height);
userDataType = UserDataType.ENEMY;
linearVelocity = speed;
}
public void setLinearVelocity(Vector2 linearVelocity) {
this.linearVelocity = linearVelocity;
}
public Vector2 getLinearVelocity() {
return linearVelocity;
}
@Override
public void render(float delta, float speed) {
timer += Gdx.graphics.getDeltaTime(); //returns time between two frames
if (timer > 10) { //after 10 seconds
linearVelocity = linearVelocity * 1.1F;
timer = 0; //reset timer
}
}
}
请问有人请向我解释我做错了什么?我尝试从Vector2更改为浮动,并没有工作。对于EnemyUserData类新的代码如下:
package com.avoidcrashjump.box2d;
import com.avoidcrashjump.Constants;
import com.avoidcrashjump.enums.UserDataType;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.math.Vector2;
/**
* Created by Felipe on 3/1/2016.
*/
public class EnemyUserData extends UserData {
float timer = 0;
float speed = 200f;
private Vector2 linearVelocity;
public EnemyUserData(float width, float height) {
super(width, height);
userDataType = UserDataType.ENEMY;
linearVelocity = speed;
}
public void setLinearVelocity(Vector2 linearVelocity) {
this.linearVelocity = linearVelocity;
}
public Vector2 getLinearVelocity() {
return linearVelocity;
}
@Override
public void render(float delta, float speed) {
timer += Gdx.graphics.getDeltaTime(); //returns time between two frames
if (timer > 10) { //after 10 seconds
linearVelocity = linearVelocity * 1.1F;
timer = 0; //reset timer
}
}
}
这是我必须做我的比赛只是时间问题。
还要注意,有一个[Vector2#SCL(浮动)(https://开头libgdx .badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/math/Vector2.html#scl-float-)方法,它应该做同样的事情。 – Springrbua
OP应该使用它来代替,它更紧凑,更清楚地表明意图。好的@Springrbua – Machinarius