Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 检测两个动画精灵之间的像素完美碰撞?_Android_Andengine_Collision Detection - Fatal编程技术网

Android 检测两个动画精灵之间的像素完美碰撞?

Android 检测两个动画精灵之间的像素完美碰撞?,android,andengine,collision-detection,Android,Andengine,Collision Detection,如何检测andengine中两个动画精灵之间的碰撞?我尝试了使用AndEngineCollectionsExtension函数的CollipsWith,但我检测到了与透明像素的碰撞 这是我的代码: private BitmapTextureAtlas mSpriteTexture; private PixelPerfectTiledTextureRegion mSpriteTextureRegion; private PixelPerfectAnimatedSprite sprite;

如何检测andengine中两个动画精灵之间的碰撞?我尝试了使用AndEngineCollectionsExtension函数的CollipsWith,但我检测到了与透明像素的碰撞

这是我的代码:

private BitmapTextureAtlas mSpriteTexture; 
private PixelPerfectTiledTextureRegion mSpriteTextureRegion; 
private PixelPerfectAnimatedSprite sprite; 

private BitmapTextureAtlas mObstaculoBajo_TextureAtlas; 
private PixelPerfectTiledTextureRegion mObstaculoBajo_TextureRegion; 
private PixelPerfectAnimatedSprite mObstaculoBajo1; 

private CollisionLogger spriteCollisionLog;

spriteCollisionLog = new CollisionLogger("SpriteColl");

spriteCollisionLog.startCollisionCheck (); 
sprite.collidesWith collisionResult = boolean (mObstaculoBajo1); 
spriteCollisionLog.endCollisionCheck (collisionResult); 
if (collisionResult) 
{
 showToast ("Collision"); 
} 

最好的方法是检查两个精灵中心点之间的距离,如果它小于精灵忽略透明区域的宽度,则可以说它们正在碰撞。。另一种方法是,如果您使用的是不规则形状的精灵,则将精灵子类化并覆盖colideswith属性,然后检查碰撞区域像素颜色

此外,还有像素完美的colision扩展,它的thershold用于alpha property

结帐 它速度很快(在我非常低端的中兴通讯刀片上,只需几次碰撞,就可以轻松地以60FPS的速度运行) 您为alpha设置了阈值 它支持针对任何矩形形状的像素完美碰撞(这意味着,如果将星星作为像素完美精灵,将立方体作为普通精灵,当立方体未接触有效星星时,碰撞检查将返回false) 它有不同的调试工具(用于查看性能的记录器,用于查看实体掩码的实用方法,…) 它非常容易使用:只需使用PixelPerfectSprite和PixelPerfectAnimatedSprite,而不是普通的

你可以在这里找到分机

扩展正在尝试与andengine发生冲突,但我肯定遗漏了什么,因为它检测到了冲突,尽管像素是透明的。