SPriteKit冒険Pt 2
SkcropNodeとサイジング、spritekit冒険pt 2
最初の投稿では、画面の左上部に私のFuelGaugeを追加する良い方法を見つけました.今、私たちの消費を反映するように燃料をアニメーション化しようとしましょう.
歴史
あなたが我々がここで得た方法に興味があるならば、チェックしてください.あなたが速度をアップしている場合は、それを取得しましょう!
私たちの旅が始まる!
私が説明で述べたように、私の考えはSkcropNodeを追加することです.そうすれば、私はそれを上下に動かすことによって燃料消費を「アニメーション化することができます」.私は、それが本当によく説明するPaul Hudsonによってこのポストを見つけました.
それで、私は最初にベースゲージを置きます、そして、それであればトップに、燃料量を集めるSkcropNode.
// MARK: Fuel Gauge Base (this is basically the gauge without the bright green fuel texture)-------------------------------
let fuelGaugeBase = SKSpriteNode()
fuelGaugeBase.size = CGSize(width: fuelGaugeHeight/23, height: fuelGaugeHeight)
fuelGaugeBase.position = CGPoint(x: 16, y: playableArea.maxY - fuelGaugeHeight/1.5)
fuelGaugeBase.texture = SKTexture(imageNamed: "fuelGaugeBase")
addChild(fuelGaugeBase)
// ------------------------------------------------------------------------------------
// MARK: Fuel Gauge -------------------------------
fuelGauge = SKSpriteNode()
// We are using 0's here since its positioned in regards to the parent, or SKCropNode
fuelGauge.position = CGPoint(x: 0, y: 0)
fuelGauge.texture = SKTexture(imageNamed: "fuelGauge")
fuelGauge.size = CGSize(width: 5, height: fuelGaugeHeight * 0.97)
// ------------------------------------------------------------------------------------
// MARK: Crop Node -------------------------------
let cropNode = SKCropNode()
cropNode.position = CGPoint(x: 16, y: playableArea.maxY - fuelGaugeHeight/1.5)
cropNode.maskNode = SKSpriteNode(imageNamed: "fuelGaugeMask")
cropNode.addChild(fuelGauge)
cropNode.zPosition = 1
addChild(cropNode)
// ------------------------------------------------------------------------------------
これまでのところ、良い位置は、okとサイズが大きいようです.
次にフューエルゲージを上下に動かしたいので、燃料量をマスキングします.私はskcropNodeの子であるSkspriteNodeのベースを動かすことによってそれを行うことができると思います
私がしなければならないすべては、ノードのy位置を変えることです100は、我々にOK結果を与えなければなりません.
//...
fuelGauge.position = CGPoint(x: 0, y: -100)
//...
ケイミー.それはまったくよく見えない.それはゲージをマスクします、しかし、マスクのサイズはすべて我々が加えた* FuelGaugeノードのサイズに近いです.ここで定義されているスプライトのサイズを選ぶだけです.
cropNode.maskNode = SKSpriteNode(imageNamed: "fuelGauge")
私がそのskcropNodeサイズをFuelGaumと同じようにすることができるかどうか見る時間と見てください.私はここで使用することができます他のオプションがありますが、私は本当にそれをトリミングしたい.理由から.解決策🏆
私は、私が問題であることを意味するように、同様の問題で誰も見つけませんでした😁 週末は一休みした🍻🍻🍻) そして、私が座って、再びコードを見た後に、5分後に、それを信じてください、そして、それは私を打ちました!
それは実際には非常に明白だった、それはちょうど私にマスクのスプライトを使用しないようにしようとしたことはなかった.
我々.MaskNodeは、スプライトのサイズを拾っている、それは我々が再生可能な領域に応じてすべてのサイズを変更する気にしない.知っている必要があるすべては、我々が現在使っているサイズです!
これを行きましょう⬇️
//...
cropNode.maskNode = SKSpriteNode(color: .green, size: CGSize(width: fuelGauge.size.width, height: fuelGauge.size.height * 0.97))
//...
今それは私がtalkin 'の試合です!🤜💥🤛
これを磨きましょう🇵🇱
そのサイズが働く今、スプライトをマスクの内側に上向きに動かすことによって燃料の使用をアニメーション化しましょう.余分な「もの」として、私は着陸機がより多くの燃料を消費するようにします.
まず、スプライトのy位置を保持するグローバル変数を宣言します.
var fuelConsumption : CGFloat = 0
.
.
.
fuelGauge.position = CGPoint(x: 0, y: fuelConsumption)
新しく作成されたupdateful ()メソッドの内部に消費ロジックを配置します.func updateFuel() {
// Determine consumption
switch touchCount {
case 1:
fuelConsumption += 0.3
case 2:
fuelConsumption += 0.45
default:
fuelConsumption -= (isTouching && fuelConsumption > 0) ? 0.8 : 0.0
}
// Update sprite position
fuelGauge.position.y = fuelConsumption
}
もちろん、デフォルトのupdate ()メソッドの最初に追加しますoverride func update(_ currentTime: TimeInterval) {
updateFuel()
.
.
.
ドン' ZOワシントン!
そして、ここで最終的な製品は(今のところ)私たちのランダーは現在、燃料と同様に燃料を使用することができます.
どれだけこれはIRLが、ヘイ、それはドライバの問題は、今私の費用は😉.
また、一種のばかな冗談として、私は燃料消費量を作りました.我々は宇宙にいる🛰.
閉じるこの動画はお気に入りから削除されています.かどうか!
あなたが私に知らせてくれるならば、私は本当に感謝します.
あなたがちょうど私にメッセージを送っても🌎.
ハードな気持ちはない、想像以上に正直を感謝します.
Reference
この問題について(SPriteKit冒険Pt 2), 我々は、より多くの情報をここで見つけました https://dev.to/emin_ui/spritekit-adventures-pt2-1jdpテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol