Ich habe diesen Proof of Concept mit fünf grünen Kästchen erstellt, die von einem roten Kästchen getroffen werden sollen, das der Fingerposition folgt (im Debug-Modus blau markiert) und ein Federgelenk verwendet.
Das Knifflige hier ist, dass ich den Physikkörper für das rote Kästchen benötige, das ich bewegen möchte, um nicht dort zu sein statisch. Ich muss es also irgendwie so verschieben, dass die Physiksimulation darauf reagieren kann. Ich habe von Leuten gehört, die die Fingerbewegung als Geschwindigkeit auf den Physikknoten anwenden, aber ich erwarte nicht, dass dies annähernd so reibungslos funktioniert, als wenn ich ein sehr enges Gummiband simulieren könnte, das irgendwie schnell dämpft.
Probleme bei der Bewegung mit der Geschwindigkeit:
- Wenn Sie die rote Box in ein Objekt drücken, drückt dieses Objekt zurück und infolgedessen befindet sich die rote Box nicht mehr unter Ihrem Finger und wird allmählich weiter entfernt.
- Fühlt sich nicht stark genug am Zugknoten befestigt
- Oszillationen/Vibrationen/Schleifen usw.
Gibt es Werte für Dämpfung/Frequenz/Reibung/Masse, die dafür sorgen können, dass sich das gut anfühlt? Als Hinweis: Ich bin mir nicht sicher, warum, aber der blaue Ziehgriffknoten kollidiert mit den grünen Kästchen, obwohl er statisch und so eingestellt ist, dass er nicht kollidiert ... Ich weiß nicht, warum.
Code: Select all
class GameScene: SKScene {
let box = {
let node = DraggableNode(color: .red, size: CGSize(width: 50, height: 50))
node.position = CGPointMake(150, 150)
node.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: 50, height: 50))
node.physicsBody?.allowsRotation = false
node.physicsBody?.affectedByGravity = false
node.physicsBody?.isDynamic = true
return node
}()
override func didMove(to view: SKView) {
physicsBody = SKPhysicsBody(edgeLoopFrom: frame)
addChild(box)
// Add smaller boxes to collide with
let targetCount = 5
let targetSize = CGSize(width: 30, height: 30)
let targetY = size.height * 0.75
for i in 0..
Mobile version