Ho cercato questo e penso che ci deve essere qualche parametro per risolvere questo problema ma non l'ho trovato.SpriteKit Nodi che attaccano ai bordi della scena/Non rimbalzano
Ho una scena in SpriteKit in cui voglio che alcune sfere/palline rimbalzino e mantengano qualsiasi velocità abbiano indefinitamente. Dovrebbero rimbalzare sui bordi della scena.
Questo sta funzionando se si muovono abbastanza velocemente, o colpiscono con un angolo abbastanza acuto, ma se stanno andando più lentamente e si avvicinano al piano del bordo, continuano a muoversi (che è buono) ma loro " Stick "ai bordi. Questo è ciò che non voglio. Dovrebbero rimbalzare anche se vanno molto lentamente.
Per impostare i bordi, ho usato:
SKPhysicsBody *borderBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
self.physicsBody = borderBody;
self.physicsBody.friction = 0.0;
self.physicsBody.restitution = 1.0;
self.physicsBody.linerDamping = 0.0;
self.physicsBody.angularDamping = 0.0;
self.physicsBody.affectedByGravity = NO;
E sui nodi cerchio, ho impostazioni simili, come:
ball.usesPresciseCollisionDetection = YES;
ball.dynamic = YES;
ball.restitution = 1.0;
ball.linearDamping = 0.0;
ball.angularDamping = 0.0;
ball.friction = 0.0;
ho la forza di gravità nella mia scena a zero. Aggiungo un impulso ai nodi e iniziano a rimbalzare - Sembra molto vicino, poiché le cose rimbalzano, ma se ci sono movimenti lenti che si avvicinano a un angolo poco profondo, "abbracciano" i bordi. Proverò a includere un'illustrazione qui sotto per aiutare a visualizzare.
http://i.imgur.com/Rpr7luY.png
Ho provato a giocare con un sacco di impostazioni PhysicsBody, ma non riesco a ottenere le cose per fermare attaccare.
Grazie!
probabile effetto collaterale di imprecisioni di simulazione fisica. Prova con allowRotation off. Se ciò non ti aiuta potresti dover vivere con questo comportamento. – LearnCocos2D
Grazie per il pensiero. Ho provato a impostare allowRotation on e off. Gli oggetti tendono a rimanere attaccati ai bordi anziché rimbalzare quando vanno lentamente. Ho postato un breve video che mostra questo in azione qui: [link] (http://youtu.be/TFNBvsSs6Ak) – Jim
imposta l'attrito a zero attrito impedendogli di rimbalzare sui bordi o è possibile ottenere contact.collisionImpulse sulla funzione didBeginContact e applicare e poca forza o impulso su ogni collisione di bordo – dragoneye