【问题标题】:How to do pixel perfect collision on many sprites in cocos2d?cocos2d中如何对多个精灵进行像素完美碰撞?
【发布时间】:2011-04-20 19:25:04
【问题描述】:

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

一些解释会很棒;)

非常感谢!

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

编辑:我的敌人是圆形的。

【问题讨论】:

  • hmm.. 敌人有多大??
  • 25x25 像素。以后它们会小一点
  • 大图像会导致检测速度变慢吗? Mayby有另一种解决方案吗? (不,我不想使用 box2d 或花栗鼠 ..它对我的目的来说太大了)
  • 哈哈.. y 不使用 cgrects?像素碰撞更加占用处理器资源。形状是否更接近圆形?
  • 我的形状是圆形 :D 圆形有更好的可能性吗?

标签: iphone cocos2d-iphone collision-detection pixel-perfect


【解决方案1】:

圆-圆碰撞是最简单的..计算是最快的..我希望你知道玩家的半径和敌人的半径..让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
}

我们正在使用勾股定理计算 2 点之间的距离。 http://en.wikipedia.org/wiki/Pythagorean_theorem

【讨论】:

  • +1 并被接受(因为它看起来会起作用)。我会试试这个:)
猜你喜欢
  • 1970-01-01
  • 2013-03-29
  • 1970-01-01
  • 2012-04-28
  • 2012-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多