Android游戏中的跳转方法

时间:2012-06-26 15:33:43

标签: android game-physics

我是Android游戏开发的新手,我开始了一个简单的游戏,因为Droid可以跳过传入的盒子。 我想用onTouchEvent在表面视图中调用我的droid.jump()方法(只需在屏幕上点击一下)

我创建了一个名为Droid的类:

public class Droid {


// Log Tag for Debugging
public static final String LOG_TAG = "_1Projekt";

private Bitmap bitmap; // the actual bitmap
private int x; // the X coordinate
private int y; // the Y coordinate
private boolean touched; // if droid is touched/picked up
private Speed speed; // the speed with its directions

private long mLastTime;

public Droid(Bitmap bitmap, int x, int y) {
    this.bitmap = bitmap;
    this.x = x;
    this.y = y;
    this.speed = new Speed();
}

....... ...

而jump()方法是我的问题。我想顺利跳转,但我不知道如何用当前的系统时间来计算它。 我的想法是机器人应该每隔-TimePeriod更新它Y位置,并且应该以快速速度开始,然后将其减小到0以获得平滑跳跃。 但我不知道如何在我的while循环中计算这个。 我当前的跳转():

public void jump() {
    Log.d(LOG_TAG, "Jumping");
    long now = System.currentTimeMillis();
    int elapsedTime = 100;
    int jump = y-30;

    while(y > jump)
    {
        if(System.currentTimeMillis() > now + elapsedTime)
        {
        now = now + elapsedTime;
        elapsedTime -=3;
        y = y-1;
        }
    }
}

我知道我只实现了Jump的“up”部分。 谢谢您的回答!问候DroidDude

1 个答案:

答案 0 :(得分:0)

您可能希望查看here(第三篇文章):

  

在主循环之前,有

//Get the current time
timeStep = System.currentTimeMillis();
     

然后做你的东西。然后在循环开始之前,有

// Hold to lock at FPS
while(System.currentTimeMillis()-timeStep < 1000/60);
     

其中60是每秒运行的帧数。

     

此方法还允许您获取后的时间差异   while循环以找出渲染一个所需的时间   帧。使用它,您可以拥有一个可以将所有变量相乘的变量   你的增量来获得与帧无关的速度。

     

例如,如果划分它所用的毫秒数   通过16.666处理帧,当程序时该数字将等于1   以约60 FPS运行。当帧速率较低时,需要更多   渲染帧的毫秒数,该因子变大。

     

一定要把它放在重绘之前。这是电子游戏的方式   也是时间。我的视频游戏基础小程序代码中显示了一个示例   JAVA下的片段。