G'day all,
Короче говоря, я использую цикл for для создания группы идентичных спрайтов, которые я хочу откидывать по экрану.Проблема в том, как мне написать процесс обнаружения столкновений для спрайтов.Я использовал процесс размещения прямоугольников вокруг спрайтов и использования метода .intersects для прямоугольников, но в этом случае я создал каждый спрайт отдельно и мог идентифицировать каждый из них уникальным образом.Теперь у меня есть куча спрайтов, но нет очевидного способа выбора одного из другого.
Подробно, если я создам объект с именем Bouncer.cs и дам ему инструкции по перемещению в его методе update (), то создамкуча спрайтов, использующих это в Game.cs:
for (int i = 1; i < 5; ++i)
{
Vector2 position = new Vector2(i * 50, i * 50);
Vector2 direction = new Vector2(i * 10, i * 10);
Vector2 velocity = new Vector2(10);
Components.Add(new Bouncer(this, position, direction, velocity, i));
}
base.Initialize();
Я могу нарисовать прямоугольник вокруг каждого, используя:
foreach (Bouncer component1 in Components)
{
Bouncer thing = (Bouncer)component1;
Rectangle thingRectangle;
thingRectangle = new Rectangle((int)thing.position.X, (int)thing.position.Y, thing.sprite.Width, thing.sprite.Height);
Но теперь, как я могу проверить на столкновение?Я с трудом могу использовать:
if (thingRectangle.Intersects(thingRectangle))
Я должен отметить, что я учу по профессии и играю с кодированием, чтобы мой мозг не превратился в кашу.Недавно я работал с Python и с Python я мог просто поместить все спрайты в список:
sprites[];
Тогда я мог бы просто ссылаться на каждого из них как sprite [1] или sprite [2] или как угодноИндекс в списке есть.Есть ли в XNA что-то подобное?
Пожалуйста, дайте мне знать, нужно ли публиковать еще какой-нибудь код.
Спасибо, Эндрю.