избежать столкновения в короне SDK - PullRequest
2 голосов
/ 20 ноября 2011

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

Ответы [ 5 ]

3 голосов
/ 21 ноября 2011

Вам необходимо создать «фильтр столкновений», добавляющий оба «categoryBits» и «maskBits» к каждому объекту. Вы назначаете номер им обоим в физическом теле. Что-то вроде:

physics.addBody(object, {bounce = .2, density = 1, filter = {maskBits = 2, categoryBits = 4}})

Биты маски будут сталкиваться только с объектами с битом той же категории. Таким образом, объект с maskBit = 2 будет сталкиваться только с объектом с categoryBit = 2.

Вы можете присвоить любой номер, который хотите, насколько я знаю.

2 голосов
/ 24 ноября 2011

Существует второй способ присвоения groupIndex каждому объекту. Значение может быть положительным или отрицательным целым числом, и это более простой способ задания правил коллизий: объекты с одинаковым положительным значением groupIndex всегда будут сталкиваться друг с другом, а объекты с одинаковым отрицательным значением groupIndex никогда не будут сталкиваться друг с другом.

local collisionFilter = { groupIndex = 2 }
physics.addBody(object1, {bounce = .2, density = 1, filter = collisionFilter})
physics.addBody(object2, {bounce = .2, density = 1, filter = collisionFilter})
1 голос
/ 24 мая 2013

Я знаю, что на этот вопрос уже дан ответ, но это может быть полезно для вас. Я использовал object.isSensor = true в своем проекте, чтобы даже если объект имел физическое тело, он не сталкивался с другими объектами.

1 голос
/ 20 марта 2013

Числа должны быть в степенях 2. Не любое число.

1 голос
/ 21 ноября 2011

Концепция - фильтрация столкновений.Эта ссылка может помочь.

http://developer.anscamobile.com/forum/2010/10/25/collision-filters-helper-chart

...