Xna Collision Dection
这确实取决于它是否是一个3D或2D游戏,但我认为这些教程应包括这样两个效果的方式:
http://rbwhitaker.wikidot.com/3d-tutorials
http://rbwhitaker.wikidot.com/2d-tutorials
对于三维碰撞检测,您可以使用BoundingBox物体来近似一个光周期,并且可能还有一个BoundingSphere也可以派上用场.4
编辑:
凡LightEmitter
是Vector2其中的线索会出来,
LightTrail
是与光路径的1个像素宽的部分一个Texture2D,
LastEmitterPos
是表示Vector2的LightEmitter
和小径的最后一个位置是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);
有一些毛刺和很多这里需要优化的,但我敢肯定,这可以给你一个好主意什么方向去,或者至少有点。的鼓励,如果没有别的;)
游戏会在2D – Mike 2011-12-18 00:41:54
你可以为效果平铺纹理,并使用Rectangles与Rectangle.Intersects()进行碰撞检测,这里是一个链接:http:// msdn .microsoft.com/en-us/library/system.windows.shapes.rectangle.aspx – annonymously 2011-12-18 00:53:01
我尝试过使用矩形,但是当你为每个玩家获得数百个游戏时,即不管它是否会减慢游戏速度,也就是说,每当他们改变方向时? – Mike 2011-12-18 01:03:21
对于2D游戏,矩形是一种快速/简单的方法来获得基本的碰撞检测。
MSDN文章here
既然你只需要设置矩形边界的每个对象要检测碰撞,然后测试Rectangle1.Intersects(Rectangle2)
条件,看看他们接触。
由于矩形不会绕过角落,它们将如何链接? – Mike 2011-12-18 00:43:28
对于圆角部分我找到了一篇他们似乎可以解决这个问题的文章。 [here](http://gamedev.stackexchange.com/questions/13268/rounded-corners-in-xna)。 不,我不认为使用大量的矩形会减慢您的游戏速度,将它看作是无形地绘制在现有小精灵上的其他精灵,并且跟随移动的精灵。 – phadaphunk 2011-12-18 02:44:00
我不认为你会得到任何有用的答案,像这样的问题。这是非常模糊的。你需要更具体。另外 - 渲染和碰撞检测是两个不同的问题,所以你应该单独向他们询问IMO。 – 2011-12-17 16:59:01
是3d吗?或2d? – 2011-12-17 20:11:10
是2d @SteveH – Mike 2011-12-18 00:45:45