我正在开发一款使用加速度计进行控制的iPhone游戏。我还没有Apple Developer Program用户,所以我无法在我的设备上进行测试,所以我试图根据我在屏幕上的位置给游戏增加一些加速度计值。
我试图做的事情: 我试图将屏幕中间作为中点,然后从中点开始的点击偏移将是加速度计的XY。我知道这些值将超过1,并且我需要的值从1到-1,所以我尝试做很多事情来让它工作。我经常很亲密,但我无法让它发挥作用。
另外,我希望有一个限制,如果距离中点的距离超过100,(你知道,sqrt(dx dx + dy dy),那么它需要距离为100,而不是像193或其他什么。
到目前为止,这是我的代码:
- (void) ccTouchesMoved: (NSSet *)touches withEvent: (UIEvent *)event
{
if(IS_SIMULATOR)
{
for( UITouch *touch in touches ) {
CGPoint location = [[CCDirector sharedDirector] convertToGL: [touch locationInView: [touch view]]];
CGFloat dx = location.x - middleOfScreen.x;
CGFloat dy = location.y - middleOfScreen.y;
CGFloat d = sqrtf(dx*dx+dy*dy);
CGFloat a = atan2(dy, dx);
CGFloat accX = /*acceleration value x*/
CGFloat accY = /*acceleration value y*/
//[mlRef setAcceleration: ccp(accX, accY)];
}
}
}
我希望你明白我想要的,请帮忙。 :)
此外,在任何人推荐之前,不,我不想使用iSimulate,我的家庭网络不喜欢它。 :(
答案 0 :(得分:1)
所以你的问题实际上是如何规范化dx和dy?只需将它们的最大值分开,dx应为160,dy应为240。
否则,只需NSLog或printf所有值并只跟踪值。如果您仍然无法解决问题,请发布日志记录代码及其输出以进行单次触摸。