Добавление коллизий объектов в слой коллизий

В настоящее время мой персонаж использует слой столкновения с pixel-Perfect. Я добавил в игру некоторые объекты, такие как «двери» или «платформы», но мой персонаж проходит сквозь них.

Я думаю, что мог бы изменить слой столкновения при каждом обновлении () с помощью чего-то вроде «слияния». Я полагаю, объединяю слой столкновения со всеми объектами, но я не знаю, как это сделать...

[отредактировано] Q1: как объединить несколько Texture2D в один?

Спасибо за чтение, надеюсь, вы поможете мне.


person Sharpnel    schedule 15.10.2012    source источник
comment
До сих пор нет ответа, если я недостаточно ясен, просто скажи мне :x   -  person Sharpnel    schedule 16.10.2012


Ответы (2)


Вы можете добиться этого, используя RenderTargets. Вот похожий вопрос о том, как их использовать.

По сути, вы можете отрисовывать все спрайты коллизий в целевом объекте рендеринга, создавая единую текстуру из нескольких. Вы можете делать это для каждого кадра, если ваш слой столкновения часто меняется.

Надеюсь это поможет!

Изменить: вот Статья MSDN о RenderTargets

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

person Msonic    schedule 17.10.2012
comment
Дополнительные правки: в качестве альтернативы вы можете проверить столкновение каждого пикселя для каждого из объектов вместо того, чтобы объединять их все в один. Однако вам нужно будет показать некоторый код, чтобы получить помощь для этого. В настоящее время я использую этот метод. Но я попробую использовать RenderTarget. Спасибо за совет! - person Sharpnel; 18.10.2012
comment
Через несколько минут я понял, что должен использовать MergedTexture2D в начале Update(). Но я могу использовать только RenderTarget в методе Draw() :x Поэтому я не могу использовать для него обнаружение столкновений моего персонажа. Есть ли другой способ разрешить объединение Texture2D в Update() ? - person Sharpnel; 18.10.2012
comment
Вы можете либо передать пакет спрайтов в свой метод update (но я не рекомендую это делать, я думаю, вызовы отрисовки во время обновления сбивают с толку), либо вы можете сохранить цель рендеринга в переменной и проанализировать ее во время следующего< /i> update звонок. Вы опоздаете примерно на 1/60 секунды, но я думаю, что это будет едва заметно. - person Msonic; 18.10.2012

Вы можете объединить Texture2D с помощью методов .SetData и .GetData.

Однако будьте осторожны с методами, так как они действительно потребляют частоту кадров.

person vinzBad    schedule 17.10.2012
comment
Я собираюсь отредактировать свой пост, потому что реальный вопрос: как объединить несколько Texture2D в один. - person Sharpnel; 17.10.2012
comment
Этот метод может быть отличным, но будет довольно сложно с моим кодом, потому что разные Texture2D, которые я использую, имеют разный размер. Спасибо в любом случае! - person Sharpnel; 18.10.2012
comment
не могли бы вы показать, как в настоящее время реализована ваша система столкновений? - person vinzBad; 18.10.2012