こんにちは!
今日、私はゲームの開発を始めましたが、トラブルが発生しました。というわけで、まず最初に言っておきたいのですが、私はゲーム開発の経験がありません...
そのため、レイヤーに CCSprite があり、これをシーン間でマージン (上、下、左、右) で移動したいと考えています。
X の最小値は -0.8 (加速度計を使用した X 軸) で、最大値は 8 です。Y の最小値は -1 (Y 軸) または 0 (Z 軸) で、最大値は 0 (Y 軸) です。または -1 (Z 軸)。
わかりました、これを知って、最小と最大のスペースと加速度計の値の間の範囲を使用してこれを実行しようとしましたが、垂直方向 (iPhone の Y 軸) で動作していません。次に、Webで完了したコードを取得しましたが、オブジェクトを後ろに移動したい場合は機能しません(オブジェクトのみが移動します)。
誰かがこれを修正する方法を知っていましたか?
私の実際のコード:
- (void)updatePosition:(ccTime)dt {
CGSize winSize = [[CCDirector sharedDirector] winSize];
float maxY = winSize.height - car.contentSize.height/2 - 20;
float minY = car.contentSize.height/2 + 20;
float newY = car.position.y + (carPointsPerSecY * dt);
newY = MIN(MAX(newY, minY), maxY);
float maxX = winSize.width - car.contentSize.width/2 - 40;
float minX = car.contentSize.width/2 + 40;
float newX = car.position.x + (carPointsPerSecX * dt);
newX = MIN(MAX(newX, minX), maxX);
car.position = ccp(newX, newY);
}
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
float speedY = acceleration.y * 500;
if(carPointsPerSecY < speedY) {
carPointsPerSecY = MIN(carPointsPerSecY + 10, speedY);
} else {
carPointsPerSecY = MAX(carPointsPerSecY - 2, speedY);
}
float speedX = acceleration.x * 200;
if(carPointsPerSecX < speedX) {
carPointsPerSecX = MIN(carPointsPerSecX + 10, speedX);
} else {
carPointsPerSecX = MAX(carPointsPerSecX - 10, speedX);
}
NSLog(@"Acceleration: X (%f) - Y (%f) - Z (%f)", acceleration.x, acceleration.y, acceleration.z);
}