如何在cocos2d中对多个精灵进行像素完美碰撞?

发布于 2024-11-02 17:15:59 字数 232 浏览 6 评论 0原文

在我的应用程序中,我有一个玩家和许多敌人(大约 100 多个)..我不想使用 CGRect,因为它不适合敌人。有没有例子如何在 cocos2d 中对许多精灵进行像素完美的碰撞检测?

一些解释会很棒;)

非常感谢!

编辑:我正在使用 CCSprite 和 .png 文件。 png 具有透明度,但它应该只检测非透明像素上的碰撞。

编辑:我的敌人是圆的。

in my app I have a player and many enemies (about 100+)..I don't want to use CGRects because it doesn't fits to the enemies. Is there any example how to do pixel perfect collision detection in cocos2d with many sprites?

Some explaination would be great ;)

Thank you very much!

EDIT: I'm using CCSprite and .png files. the png has transparency but it should only detect a collision on non-transparency pixels.

Edit: My enemies are round.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

┾廆蒐ゝ 2024-11-09 17:15:59

圆与圆的碰撞是最简单的..计算是最快的..我希望你知道玩家的半径和敌人的半径..设20是玩家的半径,10是敌人的半径..一个简单的计算是:

float dx = player.spr.x - enemy.spr.x;
float dy = player.spr.y - enemy.spr.y;
float dxy = dx*dx + dy*dy;
float collisionRad = (20+10)*(20+10);

if(dxy<= collisionRad)
{
//collision
}

我们正在使用毕达哥拉斯定理计算两点之间的距离。
http://en.wikipedia.org/wiki/Pythagorean_theorem

Circle-circle collision is the easiest.. And computing is the fastest.. I hope you know the radius of the player and radius of enemy.. Let 20 be radius of player and 10 be radius of enemy.. A simple calculation would be:

float dx = player.spr.x - enemy.spr.x;
float dy = player.spr.y - enemy.spr.y;
float dxy = dx*dx + dy*dy;
float collisionRad = (20+10)*(20+10);

if(dxy<= collisionRad)
{
//collision
}

We are calculating distance between 2 points using the Pythagorean Theorem..
http://en.wikipedia.org/wiki/Pythagorean_theorem

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文