Przeszukałem internet, aby znaleźć kilka samouczków dotyczących implementacji SKWarpGeometry na SKSpritenodes bezskutecznie.Spritekit | Swift3 | Zastosowanie SKWarpGeometry do węzłów
Mam trampolinę SKSpritenode i piłkę SKSpritenode.
ballNode = childNode(withName: "ballNode") as? SKSpriteNode
ballNode?.physicsBody = SKPhysicsBody(circleOfRadius: (ballNode?.frame.size.width)!/2)
ballNode?.physicsBody?.isDynamic = true
ballNode?.physicsBody?.usesPreciseCollisionDetection = true
ballNode?.zPosition = 3
ballNode?.physicsBody!.categoryBitMask = PhysicsCategory.ballCategory
ballNode?.physicsBody!.contactTestBitMask = PhysicsCategory.trampolineCategory
ballNode?.physicsBody!.collisionBitMask = PhysicsCategory.platformCategory
ballNode?.physicsBody?.velocity = CGVector(dx: 0.0, dy: 0.0)
ballNode?.move(toParent: _gameNode)
enumerateChildNodes(withName: "trampoline") {trampolineNode,_ in
trampoline = trampolineNode as? SKSpriteNode
trampolineNode.physicsBody = SKPhysicsBody.init(rectangleOf: CGSize(width: (trampoline?.size.width)!, height: (trampoline?.size.height)!))
trampolineNode.physicsBody?.categoryBitMask = PhysicsCategory.trampolineCategory
trampolineNode.physicsBody?.contactTestBitMask = PhysicsCategory.ballCategory
trampolineNode.physicsBody?.collisionBitMask = PhysicsCategory.ballCategory
trampolineNode.physicsBody?.affectedByGravity = false
trampolineNode.physicsBody?.isDynamic = false
trampolineNode.physicsBody?.usesPreciseCollisionDetection = true
trampolineNode.physicsBody?.restitution = 1
trampolineNode.move(toParent: _gameNode)
Gdy kula uderzy w trampolinę. Chcę, aby górna część węzła trampolinowego zgięła się do środka. Jednak po uruchomieniu następującego kodu obraz trampoliny znika.
if collision == PhysicsCategory.ballCategory | PhysicsCategory.trampolineCategory {
let src = [float2(0.0), float2(1.0), float2(2.0),
float2(3.0), float2(4.0), float2(5.0),
float2(6.0), float2(7.0), float2(8.0)]
let dst = [float2(0.0), float2(0.0), float2(2.0),
float2(3.0), float2(1.0), float2(5.0),
float2(6.0), float2(7.0), float2(8.0)]
warpGrid = SKWarpGeometryGrid(columns: 2, rows: 2,
sourcePositions: src,
destinationPositions: dst)
//
trampoline?.warpGeometry = warpGrid <---This line removes the trampoline image, so I could only assume its the way I set up the source and destination points.
let transform = SKAction.warp(to: warpGrid!, duration: 1)
let transformAction = SKAction.repeat(transform!, count: 1)
trampoline?.run(transformAction)
}
mogę być ustawienie siatki węzłów źle, ale nie mam pojęcia, jak nie ma tutoriale do mnie poprowadzi. Czy ktoś jeszcze użył SKGeometry?
Niestety, myślę, że odpowiedź na pytanie "ktoś jeszcze użył tego jeszcze" jest prawdopodobnie "nie". To była jedna z tych funkcji, których nikt (z 15 użytkowników Sprite Kit) nie widział. Jego cel wydaje się ograniczony. Na przykład między stanami osnowy nie ma okresów luzowania. Wydaje się, że jest to pomysł na pół upieczony, z mniej niż na pół upieczoną implementacją, z prostego celu, jakim jest tworzenie kołyszących się traw i drzew. Kiedy po raz pierwszy wysłuchałem ich prezentacji, byłem podekscytowany robieniem miękkich ciał. Ale po pewnych badaniach z pewnością nie jest na to wyposażony. – Confused
Czy spritekit nie jest tak szeroko stosowany? łał. Wystarczy prosty przykład, ponieważ to, co chcę zrobić, jest w teorii proste. – user3482617
o ile mi wiadomo, jest zero przykładów. Spróbowałem go użyć na trochę, tak samo jak ty, nie mogłem znaleźć nikogo, kto by go używał. Ale odkryłem również, że nie sądzę, że jest to przeznaczone do mojego pożądanego użycia. To, co znalazłem w przypadku Apple, to to, że jeśli nie jest to specjalnie zaprojektowane do czegoś, próba połączenia go z twoimi kaprysami to tylko frustracja i wściekłość. Możesz używać go zgodnie z przeznaczeniem. Ale trudno o tym wiedzieć, ponieważ Apple raz na jakiś czas stara się zrobić demo raz do roku. – Confused