【问题标题】:C# How to detect collisions with other Texture2D'sC#如何检测与其他Texture2D的碰撞
【发布时间】:2013-10-06 06:18:27
【问题描述】:
if(drawRectangle.Right > drawRectangle0.Left)
{
drawRectangle0.Y = 100;
}
这只是一个测试,看看我的代码是否会检测到它,它会检测到它,但不是我想要的方式。看,当我什至没有靠近它时,它无论如何都会移动,我希望它移动,当它检测到与drawRectangle(玩家Rectangle)发生碰撞时移动,因此玩家可以再次去收集它。
另一方面,我如何让我的Texture2D 出现而周围没有白色矩形?我如何使它不可见?
提前致谢。
【问题讨论】:
标签:
c#
xna
collision-detection
【解决方案1】:
您可以测试Rectangles 与Rectangle.Intersects(drawRectangle, drawRectangle0); 之间的重叠
我认为您将需要显示更多代码,因为很难从该 sn-p 中看出问题。
纹理周围的白色矩形是什么意思?在窗口中查看时,它们是否有一个白色矩形(不透明?)?
【解决方案2】:
如果您的精灵周围的“白色矩形”是您原始纹理的一部分,您可能需要告诉 XNA 不要绘制该颜色并使其透明。您必须在 Content Processor 属性中将 Color Key Color 从 Magenta (255, 0, 255) 更改为 White (255, 255, 255),请参阅 here .
通常最好在精灵中使用洋红色作为透明颜色,因为它是 XNA 中的默认颜色。或者更好的是,使用 Photoshop 或 Paint.net 等程序并使用 Alpha 通道使其透明。