0

我现在正在开发一个使用加速来玩的游戏。我发现了如何让我的项目移动,但不改变它的“原点”,或者更准确地说,加速度计算的原点:

事实上,我的图像移动了,它的中心是这样定义的:

imageView.center = CGPointMake(230, 240);

如您所见,我使用横向模式。但是,我希望我的形象“逐步”移动。我所说的渐进式就像游戏中的Lane Splitter

您可以看到自行车在移动,例如,当他完全靠在左侧时,该人可以将 iPad 水平定向,但自行车不会回到屏幕中间。我不知道该怎么做,因为当我尝试解决方案时,我的图像会移动,但只要我的 iPhone 水平放置,我就会回到中心。我明白为什么,但我不知道如何纠正这个问题。

这是我当前的代码:

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
    int i = 0;
    float current;
    if (i == 0)
    {
        imageView.center = CGPointMake(230, 240);
        current = 240;
        i++;
    }
    //try to modify the origin of acceleration
    imageView.center = CGPointMake(230, current - (acceleration.y*200));
    current = imageView.center.y;      
}
4

1 回答 1

1

问题是这i是一个局部变量。您的代码相当于

imageView.center = CGPointMake(230, 240);
float current = 240;
imageView.center = CGPointMake(230, current - (acceleration.y*200));
[imageView center];

相反,尝试这样的事情(假设您的图像视图在启动时位于正确的位置):

CGPoint current = imageView.center;
current.y -= acceleration.y*200;
imageView.center = current;

还要记住,acceleration.y在设备坐标空间中;如果您的 UI 支持多个方向,则需要补偿界面旋转。

于 2013-02-23T01:02:49.367 回答