java - LibGDX设置加速错误

标签 java android android-studio libgdx

我正在学习 LibGDX 进行游戏开发,我的游戏在 Box2D 上运行得几乎很好,但只剩下一件事了,设置我的敌人的加速,当我尝试这样做时(我添加 float timer = 0; 值,创建我的 EnemyUserData 类上的 render 方法并向其中添加以下代码

@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
        }
    }
}

这是我制作游戏时必须解决的唯一问题。

最佳答案

基本物理:速度一个 vector ,每个轴(X、Y、Z...)都有单独的速度,因此您不能将拳头速度简化为简单的速度标量值。

LibGDX 的 vector 似乎不会覆盖 * 运算符,因此您必须像这样缩放 vector :

linearVelocity.scl(1.1);

关于java - LibGDX设置加速错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35762223/

相关文章:

java - SQLite 'INSERT OR REPLACE INTO' 不正确的行为

android - java.lang.UnsupportedOperationException : Session: an attempt was made to request new permissions for a session that has a pending request 异常

android - Eclipse Android 项目

android - 分配给 Android Studio 的快捷方式不起作用

java - 如何使用 Jackson 和 Spring 的模块设置对象映射器

java - 如何禁止 Java VM 在崩溃/将敏感数据写入磁盘时创建任何转储

java - 膨胀类 fragment InflateException 二进制 XML 文件时出错

布局中定义的 Android EditText onClick 监听器因模糊异常而失败

android - firebase jobdispatcher-我无法添加依赖项

android - createContext 失败 : EGL_SUCCESS