我尝试使用http://github.com/haqu/tweejump中的代码,但它并不顺利......它使10-20px传送:(。
有更好的方法吗?
有些代码会很棒。
非常感谢!
:)
PS:我正在使用cocos2d。
答案 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{
}
也可以在此功能中更新精灵加速度/速度/位置
修改强>
- (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate: (UIAcceleration*)acceleration{
}
从加速度变量
中取出加速度矢量例如x:
float accX = [acceleration x];