2014-09-05 6 views
0

Я использую акселерометр для перемещения спрайта по экрану, но я не хочу покидать экран.Как остановить спрайт от выхода из экрана

Старается с этим

self.physicsWorld.contactDelegate = self; 
     self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame]; 
     self.physicsBody.categoryBitMask = edgeCategory; 


sprite.physicsBody.collisionBitMask = edgeCategory; 

Но спрайт по-прежнему оставляет экран

Я также изменить точку сцены якоря

self.anchorPoint = CGPointMake(0.5, 0.5); 
+0

Я считаю, что вам нужно установить бит, запрашивающий оба тела. – Fogmeister

+0

Я уже предлагал это. Я не думаю, что он задал спрайты categoryBitMask. – meisenman

+0

Предлагаю вам опубликовать код, создающий ваш спрайт. – 0x141E

ответ

-1

Try создания 4 прямоугольника SpriteNodes и делаю их очень тонкими , длинные линии, которые составляют вашу границу. Дайте им все равно CategoryBitMask и т. Д.

Таким образом, вы можете установить крышу и пол с использованием self.size.width как длины и около 1 или двух в качестве толщины. Напротив для сторон.

Это будет игнорировать проблему, я думаю, что у вас есть место, где сценарий. Физический прямоугольник не центрирован до середины экрана.

Если вы ранее не сделать это, используя свой метод:

Set sprite.categorybBitMask = spriteCategory; Set self.collsionBitMask = spriteCategory;

Один из узлов ДОЛЖЕН БЫТЬ ДИНАМИЧНЫМ! для столкновения для работы.

+0

ничего не случится, но я заметил, что границы сделаны, но не вокруг экрана, может быть, потому что я изменить якорь точку сцены, но как установить границы с этой точкой привязки – clear

+0

Enable ShowPhysics а также проверить, где граница создается – meisenman

+0

я включаю ShowPhysics, но спрайт не связывается с рамкой. Возможно, потому что спрайт является дочерним по отношению к другому sknode – clear

Смежные вопросы