Xna碰撞检测

时间:2011-12-17 15:51:48

标签: c# xna collision-detection

大家好我在xna制作了一个简单的tron lightcycle类型的游戏,并想知道是否有人知道绘制小径并在其上进行碰撞的最有效方法是什么?

由于

2 个答案:

答案 0 :(得分:2)

这实际上取决于它是3d游戏还是2D游戏,但我认为这些教程应该涵盖为两者做效果的方式:

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

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

对于三维碰撞检测,您可以使用BoundingBox个对象来近似一个光周期,并且BoundingSphere也可能派上用场.4

编辑:

LightEmitter是一个Vector2,其中的路径将会出现,

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);

这里有一些小问题需要进行大量的优化,但我相信这可以让你知道要进入哪个方向。或者至少有一些鼓励,如果没别的话;)

答案 1 :(得分:2)

对于2D游戏,矩形是获得基本碰撞检测的快捷方式。

MSDN文章here

由于您只需为要检测碰撞的每个对象设置矩形边界,然后测试Rectangle1.Intersects(Rectangle2)条件以查看它们是否接触。