私は、宇宙船がレイヤーを通過する小さなゲームを開発中です (doh!)。場合によっては、宇宙船が敵に近づき、レイヤー全体がズーム レベルで宇宙船にズームインされます。船と敵の間の距離に依存します。これはすべて正常に機能します。
ただし、主な問題は、ズームを宇宙船の中心に保つにはどうすればよいかということです。
現在、更新メソッドを使用して GameLayer オブジェクトのズームを制御しています。コードは次のとおりです。
-(void) prepareLayerZoomBetweenSpaceship{
CGPoint mainSpaceShipPosition = [mainSpaceShip position];
CGPoint enemySpaceShipPosition = [enemySpaceShip position];
float distance = powf(mainSpaceShipPosition.x - enemySpaceShipPosition.x, 2) + powf(mainSpaceShipPosition.y - enemySpaceShipPosition.y,2);
distance = sqrtf(distance);
/*
Distance > 250 --> no zoom
Distance < 100 --> maximum zoom
*/
float myZoomLevel = 0.5f;
if(distance < 100){ //maximum zoom in
myZoomLevel = 1.0f;
}else if(distance > 250){
myZoomLevel = 0.5f;
}else{
myZoomLevel = 1.0f - (distance-100)*0.0033f;
}
[self zoomTo:myZoomLevel];
}
-(void) zoomTo:(float)zoom {
if(zoom > 1){
zoom = 1;
}
// Set the scale.
if(self.scale != zoom){
self.scale = zoom;
}
}
基本的に私の質問は次のとおりです。レイヤーをズームして、2 つの船のちょうど真ん中に配置するにはどうすればよいですか? これは2本指でピンチズームみたいな感じかな!