如何使用加速器向左和向右移动我的ccp精灵/图像? (比如涂鸦跳)

时间:2011-01-15 19:28:33

标签: iphone cocos2d-iphone accelerometer

我尝试使用http://github.com/haqu/tweejump中的代码,但它并不顺利......它使10-20px传送:(。

有更好的方法吗?

有些代码会很棒。

非常感谢!

:)

PS:我正在使用cocos2d。

1 个答案:

答案 0 :(得分:1)

根据加速度计测量计算所需精灵的速度。

最简单的方法是使用线性依赖: spriteVel = cft*accValue, 其中cft是一个系数,显示你的精灵移动的速度

另一种方法是说你的精灵加速度是加速度计测量的线性函数: spriteAcc = cft*accValue和计算速度作为加速度的线性函数: spriteVel = spriteInitVel + time*accValue

这可以很容易地在你的tick函数中实现,这个函数在游戏的每一帧都被调用,如下所示: `spriteVel + = timeSinceLastCall * accValue'

同样在这个函数中更新精灵的位置,如下所示: spritePos = timeSinceLastCall*spriteVel

这将产生平滑逼真的(如果使用第二种方法)精灵运动

要启用加速计,请在图层初始化方法

中添加此代码
isAccelerometerEnabled = YES;
[[UIAccelerometer sharedAccelerometer] setUpdateInterval:(TIMER_INTERVAL)];

其中TIMER_INTERVAL是您间隔所需的(例如1./30)

在您的图层中也实现此功能以保存加速计测量值

- (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:    (UIAcceleration*)acceleration{

}

也可以在此功能中更新精灵加速度/速度/位置

修改

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIAcceleration_Class/Reference/UIAcceleration.html

- (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:    (UIAcceleration*)acceleration{

}

从加速度变量

中取出加速度矢量

例如x:

float accX = [acceleration x];