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