|
|
1
1
这是一个很难回答的问题,因为有很多方法可以做到。每种方法都有利弊。我只是简单介绍一下: 作为整体设计,您需要跟踪:原始纹理、应用的“黑暗”和应用的“透明度”。我几乎可以肯定的一件事是你想“积累”爆炸的结果-你不想做的是保持一份所有爆炸发生的清单。 所以你有表面的纹理,黑暗和透明。你可能会把黑暗和透明合并到一个单一的表面上,用一个通道来存储“正常”、“黑暗”(或一个黑暗层次)和“透明”。
因为你可能不希望暗环在它们相交的地方逐渐变暗,当你将爆炸应用到你的黑暗层时,
要生成最终纹理,您只需将“黑暗/透明度”纹理写入原始纹理或其副本(只需更新每个爆炸接触的区域)。 或者,您可以使用像素着色程序来组合它们-这些细节超出了这个问题的范围。(同样,像素明暗器在WindowsPhone7的xna 4.0上也不起作用。) |
|
|
2
3
本教程是您要搜索的内容: http://www.riemers.net/eng/Tutorials/XNA/Csharp/series2d.php Capter 20:添加爆炸坑 简而言之: 您有两种纹理:一种颜色纹理(可见),一种碰撞纹理(不可见) 从碰撞纹理中减去爆炸图像。 要获得深色边框:展开爆炸纹理并使该区域中的颜色变暗。 现在生成一个新的颜色纹理(旧颜色-Collison=新颜色)。 |
|
|
3
0
应使用所需像素的颜色生成新的texure2d。alpha=0。
现在用最后一个纹理替换新纹理2d,你就可以走了! 有关碰撞或更改纹理像素颜色的更多代码,请转到此页面获取代码: http://www.codeproject.com/Articles/328894/XNA-Sprite-Class-with-useful-methods |