加速,移动物品

时间:2013-02-23 00:02:16

标签: ios objective-c accelerometer

我现在正在开发一款使用加速玩法的游戏。我发现了如何让我的物品移动,但不是为了改变它的“原点”,或者更确切地说,是加速度计算的原点:

事实上,我的图像会移动,其中心的定义如下:

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

1 个答案:

答案 0 :(得分: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支持多个方向,则需要补偿界面旋转。