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. Box2D - 如何加速加速
- 4. 帶有Cocos2d-x球的Box2d不會被加速度計反彈
- 5. Mixing Box2D加速度傳感器+重力?
- 6. box2d加速度計如何使其工作
- 7. Box2d - 用速度和角度計算衝動的問題
- 8. 來自加速度計的速度
- 9. Libgdx Box2D速度不夠快
- 10. Box2d - 加速和限制車輪的速度
- 11. gluLookAt加速度計
- 12. STM32F4加速度計
- 13. Android加速度計
- 14. BounceEase加速度計
- 15. FFT加速度計
- 16. 加速度計QML
- 17. Android加速度計
- 18. BLE加速度計
- 19. Android加速度計精度
- 20. 從速度計算加速度峯值
- 21. 從UIA加速計計算速度
- 22. 在Box2d中測量速度如何?
- 23. Android加速度計角度計算
- 24. Box2d:最大可能的線速度?
- 25. Box2d力量和碰撞後的速度
- 26. Box2D的提升速度碰撞
- 27. 其實限制Box2D的最高速度
- 28. 身體的極限線速度andengine box2d
- 29. 禁用清單中的加速度計
- 30. iPhone中的加速度計範圍
我的應用程序有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