2015-05-11 8 views
5

Sto provando a creare un'app per iOS che includa un rilevamento di collisione tra due corpi fisici. Voglio che uno dei corpi di fisica sia la forma di un'immagine che sto usando, ma quando provo a farlo usando una texture rallenta enormemente la mia app e alla fine lo fa congelare del tutto. Queste sono le due righe di codice che sono la causa:Swift SpriteKit fare body fisica da texture di un'immagine rallenta troppo la mia app

let texture = SKTexture(imageNamed: "image.png") 
physicsBody = SKPhysicsBody(texture: texture, size: size) 

tuttavia, se cambio queste due righe a qualcosa di simile

physicsBody = SKPhysicsBody(rectangleOfSize: size) 

allora tutto funziona perfettamente bene. Qualcun altro ha avuto questo problema e/o trovato una soluzione?

+0

Questo accade mentre i corpi si muovono, o quando si scontrano, o ...? Ho appena provato questo e non riesco a produrre quello che stai dicendo. La creazione di body fisici da texture è costosa, ma non dovrebbe essere così tanto per rallentare la tua app solo a causa di un corpo fisico. ? Prova ad usare il progetto vuoto e vai passo dopo passo. Per prima cosa crea un corpo fisico dalla trama e controlla che rallenta un'applicazione. Altrimenti, vai oltre e sposta il corpo applicandogli un impulso. Se tutto funziona, prova a fare una collisione. ecc. In questo modo sarai sicuro di ciò che crea un problema, perché ciò che stai facendo dovrebbe funzionare. In bocca al lupo! – Whirlwind

+0

Ho anche affrontato lo stesso problema quando ho aggiunto circa 10 picchi con forma triangolare alla mia scena. –

risposta

5

Ciò può essere dovuto alla natura complessa della trama, ma è difficile da dire senza vederlo. Come ha detto Whirlwind, probabilmente non dovrebbe causare un rallentamento così significativo, ma è difficile risolverlo senza ulteriori informazioni.

Un modo per aggirare la creazione di SKPhysicsBody da una trama consiste nell'utilizzare uno strumento online per costruire il corpo da un percorso. Io uso this tool personalmente. Potrebbe essere un lavoro decente in giro.