2
A
回答
3
标准cocos2d-box2d模板文件通过相对于加速度计值应用重力来使用加速度计移动框。
- (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration
{
static float prevX=0, prevY=0;
//#define kFilterFactor 0.05f
#define kFilterFactor 1.0f // don't use filter. the code is here just as an example
float accelX = (float) acceleration.x * kFilterFactor + (1- kFilterFactor)*prevX;
float accelY = (float) acceleration.y * kFilterFactor + (1- kFilterFactor)*prevY;
prevX = accelX;
prevY = accelY;
// accelerometer values are in "Portrait" mode. Change them to Landscape left
// multiply the gravity by 10
b2Vec2 gravity(-accelY * 10, accelX * 10);
world->SetGravity(gravity);
}
您需要更具体地说明您希望球做什么取决于您如何移动手机。你的问题目前很难回答。
1
获得加速度计测量结果,并说力=系数*测量。将此力施加到您的b2Body上
0
让你有标记球雪碧是1
与加速度计委托替换此代码,
我测试的设备,它的工作。
并且你的球会随着加速计移动。
-(void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration
{
#define kFilterFactor 0.75
accelerometer.updateInterval = 1.0f/60.0f;
static UIAccelerationValue rollingX = 0, rollingY = 0;
for (b2Body *b = world->GetBodyList(); b; b = b->GetNext())
{
if (b->GetUserData() != NULL)
{
CCSprite *sprite = (CCSprite*)b->GetUserData();
if (sprite.tag == 1) {
rollingX = (acceleration.x * kFilterFactor) + (rollingX * 0.25);
rollingY = (acceleration.y * kFilterFactor) + (rollingY * 0.25);
float accelX = rollingX;
float accelY = rollingY;
CGPoint moveNewPosition = sprite.position;
if (accelX > 0.1) {
moveNewPosition.y += 2;
} if (accelX < 0.1) {
moveNewPosition.y -= 2;
}
if (accelY > 0.1) {
moveNewPosition.x -= 2;
} if (accelY < -0.1) {
moveNewPosition.x += 2;
}
b->SetLinearVelocity(b2Vec2(2,2));
sprite.position = ccp(moveNewPosition.x , moveNewPosition.y);
sprite.rotation = -1 * CC_RADIANS_TO_DEGREES(b->GetAngle());
}
}
}
}
我希望它能工作。
相关问题
- 1. BOX2D XNA的加速度/速度
- 2. Box2D对象速度
- 3. Mixing Box2D加速度传感器+重力?
- 4. box2d加速度计如何使其工作
- 5. 来自加速度计的速度
- 6. Box2d - 加速和限制车轮的速度
- 7. Android加速度计
- 8. BounceEase加速度计
- 9. gluLookAt加速度计
- 10. FFT加速度计
- 11. Android加速度计
- 12. BLE加速度计
- 13. Android加速度计精度
- 14. 在Box2d中测量速度如何?
- 15. 从速度计算加速度峰值
- 16. 从UIA加速计计算速度
- 17. Android加速度计角度计算
- 18. Box2d:最大可能的线速度?
- 19. Box2D的提升速度碰撞
- 20. iPhone中的加速度计范围
- 21. WP7中的加速度计故障
- 22. 更高精度的Android加速度计
- 23. android加速度计registerListener
- 24. Android加速度计游戏
- 25. 加速度计采样率
- 26. Android加速度计问题
- 27. 平滑UIA加速度计
- 28. 加速度计不工作
- 29. Android.Location与加速度计
- 30. Android加速度计问题
我的应用程序有1个球,我想旋转加速度计和一些其他对象不移动...你的代码不适用于我的应用程序。 – Jasmit 2011-04-11 10:13:03
你想旋转球的加速度计?你的意思是你想让它在你倾斜的时候左右滚动吗?我给你的代码是cocos2d示例代码。我想你需要阅读box2d并理解它是如何工作的。安德鲁的方法会奏效,但他并没有把所有的东西都放在盘子上;)教导一个人钓鱼。 – Bongeh 2011-04-11 12:39:30
只需在与球相关的b2body上施加一个力,而不是设置重力。 – placeybordeaux 2012-12-21 16:27:57