XNA Как я могу получить цвет спрайта

В настоящее время я работаю над 2D-проектом, который генерирует случайную черную местность на загруженном фоне. У меня есть загруженный и управляемый спрайт, и я пытаюсь выяснить, какой лучший метод для определения цвета за спрайтом для кодирования коллизии на основе цвета. Я пробовал кучу руководств по пикселю и цвету, но все они, похоже, зависят от используемой карты столкновений или ограничивающих рамок между двумя предварительно загруженными изображениями IE: спрайт и сталкивающийся объект.

Если бы кто-нибудь мог указать мне в правильном направлении, это было бы очень признательно.


person Will Blew    schedule 24.07.2012    source источник


Ответы (2)


Запрос текстур — относительно дорогая операция; Я настоятельно рекомендую вам избегать делать это в режиме реального времени. Поскольку вы создаете информацию о ландшафте процедурно во время выполнения, почему бы просто не сохранить ее в массиве и не сослаться на нее?

Если вам нужно скомпоновать текстуры или выполнить другие операции рендеринга, чтобы создать данные ландшафта, вы можете скопировать полученные данные цели рендеринга в массив в системной памяти, используя следующий код:

var data = new Color[width * height];
texture.GetData(data);

Просто постарайтесь не делать это чаще, чем это необходимо.

person Cole Campbell    schedule 24.07.2012
comment
Спасибо, я думаю, нам нужно решить что-то еще, что касается столкновений, тогда, похоже, все согласны с тем, что perpix съест игру заживо. - person Will Blew; 25.07.2012

Я думаю, что правильное направление было бы вдали от столкновений с точностью до пикселя. Большинство людей считают, что это необходимо, но факт в том, что 99% игр не используют совершенные до пикселя коллизии, потому что они медленные, их сложно реализовать должным образом и они излишни для большинства практичных игр. В большинстве игр используются AABB, круги или сферы. Они легко обнаруживают коллизии между собой и «достаточно хороши» для большинства игр. Единственная игра, в которой я могу назвать коллизии с точностью до пикселя, — это оригинальная Worms.

Это видео также хорошо описывает обнаружение столкновений: http://pyvideo.org/video/615/introduction-to-game-development (обнаружение столкновений @1:13:20)

person John McDonald    schedule 24.07.2012
comment
Спасибо, как и выше, кажется, консенсус. - person Will Blew; 25.07.2012