[英]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.