【发布时间】:2016-06-16 04:35:45
【问题描述】:
我正在学习用于游戏开发的 LibGDX,我的游戏在 Box2D 上运行得几乎不错,但只剩下一件事,即为我的敌人设置加速,当我尝试这样做时(我添加了 float timer = 0; 值,创建我的 EnemyUserData 类上的渲染方法并向其中添加以下代码
@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 更改为 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
}
}
}
这是我制作游戏的唯一问题。
【问题讨论】:
标签: java android android-studio libgdx