[英]Pixel perfect collision on spritesheet animation, XNA
我在XNA中使用Spritesheet动画,并且想使用像素完美碰撞。 我的问题是像素完美碰撞会检查Spritesheet上的当前像素是否透明,而不是对照我正在使用的Spritesheet的一部分进行检查。 这是我的代码:
blockTextureData = new Color[shot.texture.Width * shot.texture.Height];
shot.texture.GetData(blockTextureData);
personTextureData = new Color[player2.texture.Width * player2.texture.Height];
player2.texture.GetData(personTextureData);
if (IntersectPixels(player2.CollissionBox, personTextureData, shot.CollissionBox, blockTextureData))
我想知道如何选择Spritesheet的特定部分并检查与它的碰撞。 我使用了此MSDN指南 。
编辑:我设法弄清楚了,我改用这个
src = new Rectangle(frame, 0, 87, 100);
player.texture.GetData<Color>(0, src, personTextureData,0, 87*100);
和帧是您启动它的原因,例如,第一个为0
,第二个为87
,因为我使用的Spritesheet具有2张图片,宽度为2*87
,高度为100
。
Edit2:现在的问题是,一旦您命中了pixelperfect,它将停止工作,因此仅适用于1次命中。
如果您能详细说明您所说的意思,那么它仅能工作一次便会有所帮助。
我必须调整相同的IntersectsPixels函数,才能与我的项目一起工作。 我发现有帮助的一件事是使用非常缓慢的正方形动画(例如100x100),该正方形填充了纯红色,然后在其他帧中完全透明。
它在调试与碰撞和动画精灵上的像素比较有关的调试问题上大有帮助。
查看您是否可以提供确切的信息以及如何将其分解的更多信息。 祝您好运解决您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.