根据BPM计算速度

时间:2015-01-03 10:45:31

标签: objective-c math

我正试着让笔记飞过屏幕。音符将是节拍的1/16,并且BPM可以设置为任何正整数。

现在,我的等式为distance(in pixels) * (BPM / 60s) * deltaTime,其中deltaTime是帧之间的时间。在纸面上,这是有道理的。但是,当我运行应用程序时,笔记飞得太慢。假设10 BPMdeltaTime平均值为0.06255s且距离为750px,则750px * (10BPM/60s) * 0.06255s表示我应该~8px一帧(@ 60FPS) ,所以1秒后我应该470px旅行。

相反,我的旅行速度要慢得多。运行20秒后,备注仅展开250px

计算帧间时间的代码

-(void)update:(CFTimeInterval)currentTime {
    /* Called before each frame is rendered */
    deltaBeatTime += currentTime - previousFrameTime;
    CFTimeInterval deltaTime = currentTime - previousFrameTime;
    previousFrameTime = currentTime;

    myLabel.text = [NSString stringWithFormat:@"%f", deltaBeatTime];
    [beat moveBeat:deltaTime];
  }

根据BPM

移动节拍
-(void) moveBeat:(float)timeInterval
{
    float spaceMoved = (container.getBeatSpeed / 60.0f) * (750.0f) * (timeInterval);
    pixels += spaceMoved;
    dt += timeInterval;
    NSLog(@"%f in %f", pixels, dt);
    [self setPosition:CGPointMake(self.position.x - spaceMoved, self.position.y)];
}

我的等式是否存在错误,或者我忘记按某种因素进行缩放?

0 个答案:

没有答案