как сделать мой объект в XNA не может быть введен человеком - PullRequest
0 голосов
/ 21 июля 2010

Я создал несколько домов в своем мире XNA, используя такой код в моем методе loadContent:

house.Model = Content.Load<Model>("Models\\oldgreekhouse"); 
house.Position = new Vector3(0, 0, 0);
house.Rotation = new Vector3(0f, 0f, 0f);
house.Scale = 0.125f;

Затем я вызываю метод Dram (), чтобы он отображался в моем виртуальном городе.Однако у меня проблема в том, что я могу зайти внутрь здания, которое мне не нужно, как я могу это сделать? Я знаю что-то под названием BoundBox, но не уверен, сработает ли это для моего случая.

Большое спасибо.

Ответы [ 2 ]

3 голосов
/ 21 июля 2010

Проверьте положение "дома" и положение вашего "человека", как

if(human.rectangle.X + human.rectangle.width >= house.rectangle.x && human.rectangle.X <= house.rectangle.x + house.rectangle.width)
{
// the human entered here, just disallow any walking action here
}

Обратите внимание, что вы должны также добавить проверку для Y-кординатов. Также вы можете использовать некоторые ограничивающие рамки, о которых я тоже слышал, но никогда не использовал. Надеюсь, это поможет вам.

2 голосов
/ 22 июля 2010

Для зданий ограничивающая рамка была бы довольно хорошим приближением для обнаружения столкновений. Лучший способ вычислить ограничивающую рамку - использовать пользовательский контент-процессор.

см: http://www.harding.edu/dsteil/xna/notes/Making%20Bounding%20Boxes%20For%20Models.htm

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

humanBoundingBox.Intersects (houseBoundinBox)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...