Xna Столкновение Dection - PullRequest
       4

Xna Столкновение Dection

0 голосов
/ 17 декабря 2011

Привет, ребята, я делаю простую игру типа tron ​​lightcycle в xna и спрашиваю себя, знает ли кто-нибудь, каков будет самый эффективный способ нарисовать след и столкнуться с ним?

Спасибо

Ответы [ 2 ]

2 голосов
/ 18 декабря 2011

Для 2D-игры Rectangles - это быстрый / простой способ получить базовое обнаружение столкновений.

MSDN статья здесь

Так как вам нужно только установить границы прямоугольника для каждого объекта, который вы хотите обнаружить столкновения, а затем проверить условие Rectangle1.Intersects(Rectangle2), чтобы увидеть, касаются ли они.

2 голосов
/ 18 декабря 2011

Это действительно зависит от того, будет ли это 3D или 2D игра, но я думаю, что эти уроки должны охватывать способы выполнения эффектов для:

http://rbwhitaker.wikidot.com/3d-tutorials

http://rbwhitaker.wikidot.com/2d-tutorials

Для трехмерного обнаружения столкновений вы можете использовать BoundingBox объекты для аппроксимации светового цикла, и, возможно, BoundingSphere также может пригодиться.4

EDIT:

Где LightEmitter - это Вектор2, в котором будет выходить след,

LightTrail - это Texture2D с шириной светового следа в 1 пиксель,

LastEmitterPos - это Vector2, показывающий последнюю позицию LightEmitter

, а Trails - это RenderTarget2D, для которого RenderTargetUsage установлено на RenderTargetUsage.PreserveContents:

пример Метод рисования:

GraphicsDevice.SetRenderTarget(Trails);

spriteBatch.Begin();


for (float i = 0; i <= (LightEmitter - LastEmitterPos).Length(); i++)
{
    Vector2 Pos = Vector2.Lerp(LastEmitterPos, LightEmitter, i/(LightEmitter - LastEmitterPos).Length());
    spriteBatch.Draw(LightTrail, Pos, new Rectangle(0, 0, 32, 3), Color.White, MathHelper.ToRadians(90.0f), new Vector2(16, 1.5f), 1.0f, SpriteEffects.None, 1f);
}

spriteBatch.End();

GraphicsDevice.SetRenderTarget(null);

spriteBatch.Begin();
spriteBatch.Draw(Trails, Vector2.Zero, Color.White);
spriteBatch.End();

base.Draw(gameTime);

Здесь нужно несколько глюков и много оптимизации, но я уверен, что это может дать вам хорошее представление о том, в каком направлении двигаться дальше. Или, по крайней мере, немного ободрения, если ничего другого;)

...