我现在正在开发一款使用加速玩法的游戏。我发现了如何让我的物品移动,但不是为了改变它的“原点”,或者更确切地说,是加速度计算的原点:
事实上,我的图像会移动,其中心的定义如下:
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;
}
答案 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支持多个方向,则需要补偿界面旋转。