でのシーンの背景の周りにカメラをクランプので、私は、以下のビットバケットリンクで見つけることができますベースのゲームを設定していますシーンのレイアウトに関連してカメラノードを翻訳する。はSpriteKitベース
目標は、シーンのサイズによって定義されるコーナー境界に達するまで、カメラをプレイヤーに追従させることです。
:新しい位置に文字を追跡するように設定されている場合、この特定のテストシナリオのセットアップでは、シーンは1のカメラ規模以下のコードでサイズは1000×1000であるが、カメラの位置を変更するために使用されます
var cameraPosition: CGPoint {
get {
return CGPoint(x: camera!.position.x, y: camera!.position.y)
}
set {
let cameraScale = CGFloat(1)
let sceneScale = CGFloat(1)//CGFloat(1 - 0.44 + 0.05 /*possible rounding error adjustment*/)
// let viewAspectRatio = CGRectGetWidth(view!.frame)/CGRectGetHeight(view!.frame)
let newPositionValue = double2(x: Double(newValue.x * sceneScale), y: Double(newValue.y * sceneScale))
let scaledSceneSize = CGSize(width: size.width * sceneScale , height: size.height * sceneScale)
//// scaledSceneSize.height = scaledSceneSize.height/viewAspectRatio
let cameraSize = view!.bounds.size
let scaledCameraSize = CGSize(width: cameraSize.width * cameraScale, height: cameraSize.height * cameraScale)
let minX = 0//-scaledSceneSize.width * anchorPoint.x + scaledCameraSize.width/2
let minY = -219//-scaledSceneSize.height * anchorPoint.y + scaledCameraSize.height/2
let minValues = double2(x: Double(minX), y: Double(minY))
let maxX = 0//(scaledSceneSize.width * anchorPoint.x - scaledCameraSize.width/2) //size.width - cameraSize.width/2
let maxY = 219//(scaledSceneSize.height * anchorPoint.y - scaledCameraSize.height/2) //- cameraSize.height/2
let maxValues = double2(x: Double(maxX), y: Double(maxY))
let clampedPosition = clamp(newPositionValue, min: minValues, max: maxValues)
camera!.position = CGPoint(x: (clampedPosition.x/Double(sceneScale)), y: (clampedPosition.y/Double(sceneScale)))
}
}
現在、必要なシーンサイズに合ったハードコアの値があります。スケールを介してその結果を取得する方法がわかりません。デフォルトではスケールがある: - cameraSize.width/2 largestSceneDimensionYValue - cameraSize.height/2スケールでの翻訳があります知っての知識がなくても
/* Set the scale mode to scale to fit the window */
scene.scaleMode = .AspectFill
、デフォルトでは、私は境界が largestSceneDimensionXValueことを期待します
上位レベルの例として、誰でもこの翻訳を手伝うことができますか?
VSのようなカメラに黒の背景オーバーフローを持つ:
これは私の最初のアプローチと非常によく似ていますが、これはカメラの背もたれや他の条件をスケーリングするときには機能しません。上記のコードを添付した主な理由は、特定のシナリオを参照することです。レポに掲載されたコードで上記のコードを使用することができれば、完璧であるはずですが、私は100%肯定的です。カメラのスケールは0.44にする必要がありますが、値がどこから来ているかを調べるためにすべてを正規化しました。 – TheCodingArt
シーンの幅がカメラの幅と一致していないことに注意してください。 – TheCodingArt
私はあなたのコードとその周りに遊んで自分自身のプロジェクトの笑になり始めました..本当にたくさんそこに進んでいます.. もし私があなたの新しいサンプルプロジェクトを開始するかもしれない複雑さの各要素(cameraScale ..あなたが問題を解決する簡単な方法を見つけることができるまで、一度に1つずつ)。 – hamobi