2016-03-24 4 views
3

У меня есть приложение с большими коробками, падающими на маленькую красную коробку. Я хотел бы знать, когда маленький красный блок достигает определенного веса (X-блоки расположены поверх него). Я не мог найти свойство веса для красного блока. Какие-либо предложения? ScreenshotSpriteKit - Получение веса SKSpriteNode

EDIT: Просто уточнить. Коробки, падающие сверху, будут случайными размерами и падают с произвольных позиций. Таким образом, на самом деле нет способа отслеживать, что приземлилось поверх красного блока. Мне нужно каким-то образом измерить направленную вниз силу к красному блоку

+0

Не знаете, почему это получило downvoted (?), Потому что это довольно интересный вопрос! Возможно, попробуйте применить к вашим блокам [силу] (https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKPhysicsBody_Ref/#//apple_ref/occ/instp/SKPhysicsBody/mass). Тогда масса вашего красного блока должна увеличиться (я думаю, вы должны установить для свойства affectedByGravity значение true). Не могу проверить что-то прямо сейчас, но я думаю, что решение лежит в SKPhysicsBody – Heyfara

+1

масса не должна влиять на гравитацию, иначе вы бы сказали, что масса объекта на земле отличается от массы объекта на Луне. @StackOverflower, я не думаю, что встроенная физика вычисляет вес для вас, вам может понадобиться сделать это вручную (node.mass * gravity), затем применить силу силы, которую другие блоки поверх нее применяют к блоку , Для вашего сценария с наклонным блоком вам, возможно, придется выяснить, какая часть наклонной массы блока находится на красном блоке. – Knight0fDragon

+0

Является ли физический движок достаточно сложным, чтобы вы могли применить усилие вверх к красному блоку и постепенно увеличивать его до тех пор, пока он начинает двигаться? –

ответ

0

Вы можете рассчитать вес для каждого узла следующим образом, а затем добавить их вместе.

redBox.PhysicsBody?.mass 
+0

Большие блоки будут падать от случайных постулиций выше, поэтому некоторые могут не приземлиться на красный блок. – StackOverflower

+0

Просто проверьте, есть ли столкновение между падающим блоком и красным блоком. – Nils

+0

Это не сработает, если большой блок опрокинулся и был на полпути на красном блоке – StackOverflower

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