2012-06-05 98 views
0

我想在cocos2d中創建一個遊戲,其中一個對象正在運行。對象在加速度計中移動

我想從基於設備加速度計的左側和右側移動此對象。 我正在獲取加速度計的值並更新對象的位置。即使我可以在LOG中看到新的位置。但是物體並沒有從它的位置移動。這裏是我在應用程序中編寫的代碼。

- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration1 { 

acceleration = acceleration1; 
CGPoint position = mainPlayer.position; 

if(acceleration.y < -0.25) { // tilting the device to the right 
    position.y -= 0.25; 
} else if (acceleration.y > 0.25) { // tilting the device to the left 
    position.y += 0.25; 
} else { 

} // newPosition = position; 

CCAction *action = [CCMoveTo actionWithDuration:0.01 position:position]; 
[mainPlayer runAction:action]; 
// mainPlayer.position = ccp(position.x, position.y); 
} 

我試圖通過直接設置位置和利用雙方的行動方式。

劑量任何人都知道爲什麼會出現此問題或需要加速度計工作的任何設置。

請給這樣的例子的任何鏈接。

回答

0

嘗試使用,而不是通過MoveTo MoveBy:

- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration1 { 

    acceleration = acceleration1; 
    CGPoint position = ccp(0,0); 

    if(acceleration.y < -0.25) { // tilting the device to the right 
     position.y = 0.25; 
    } else if (acceleration.y > 0.25) { // tilting the device to the left 
     position.y = 0.25; 
    } 

    CCAction *action = [CCMoveBy actionWithDuration:0.01 position:position]; 
    [mainPlayer runAction:action]; 
} 
0

我會建議不要爲這種方法被稱爲像10次秒(我不記得如何cocos2d的初始化加速度)運行從加速度計動作這會導致runAction方法每秒被調用10次,並可能會停止之前的操作,因此您不會看到它的移動。

顯示關於如何創建主播放器以及如何將其添加到場景/圖層的更多代碼