我正在研究一种使用Xcode和Objective-C使用加速度计检测屏幕最低点的算法。我想画一个跟在屏幕外面的精灵,而不是穿过中间。总是倾向于屏幕的底部。
以下是我到目前为止的情况。这样可以很好地移动精灵,但仍允许精灵通过屏幕中间。我正在平均最后的AVG_SIZE值以减少抖动。评论部分是我尝试强制它跟随屏幕周边的失败尝试。有什么建议吗?
for(int i = 0; i < AVG_SIZE-1; i++){
x_array[i] = x_array[i+1];
y_array[i] = y_array[i+1];
}
float tempAccelerationX = acceleration.x;
float tempAccelerationY = acceleration.y;
/*if(fabsf(tempAccelerationX) > fabsf(tempAccelerationX)){
if(tempAccelerationY > 0)
tempAccelerationY = 1;
else
tempAccelerationY = -1;
}else if(fabsf(tempAccelerationX) < fabsf(tempAccelerationX)){
if(tempAccelerationX > 0)
tempAccelerationX = 1;
else
tempAccelerationX = -1;
}*/
x_array[AVG_SIZE-1] = ( (tempAccelerationY+1) / 2 );
y_array[AVG_SIZE-1] = 1- ( (tempAccelerationX+1) / 2 );
float ratio_x = 0;
float ratio_y = 0;
for(int i = 0; i < AVG_SIZE; i++){
ratio_x += x_array[i];
ratio_y += y_array[i];
}
ratio_x /= AVG_SIZE;
ratio_y /= AVG_SIZE;
[_sprite setPosition: ccp( self.contentSize.width*ratio_x, self.contentSize.height*ratio_y )];
答案 0 :(得分:0)
如何让您的代码更轻松?查看加速度计的this代码,特别是在本教程的更新方法中,它使精灵不会从屏幕偏移中脱落。
下面:
float imageWidthHalved = player.texture.contentSize.width * 0.5f;
float imageHeightHalved = player.texture.contentSize.height * 0.5f;
float leftBorderLimit = imageWidthHalved;
float rightBorderLimit = screenSize.width - imageWidthHalved;
float topBorderLimit = imageHeightHalved;
float bottomBorderLimit = screenSize.height - imageHeightHalved;
只需根据需要更改限制,我认为你得到了你想要的东西。