Cocos2d - 创建可碰撞的精灵?

时间:2010-11-26 21:51:43

标签: iphone cocos2d-iphone

大家好我是cocos2d的新手,所以如果这是一个简单的问题,我道歉。我想创建精灵,当他们互相碰撞时碰撞。

例如,一个sprite,spriteA,在屏幕上处于固定位置。另一个精灵spriteB正在屏幕上移动。 SpriteB将与spriteA冲突。如果这没有意义或你不理解,请告诉我,我会进一步阐述。任何帮助表示赞赏。谢谢你!

3 个答案:

答案 0 :(得分:1)

尝试使用Chipmunk或Box2d物理系统。这些包含在Cocos2d中,并通过物理模拟进行工作,每次图形在屏幕上更改时都会更新。

物理模拟将告诉您两个物体是否重叠,并将提供物理属性,如重量,滑溜(摩擦力),速度和方向,这会产生反弹,如弹跳,滑动,现实的速度损失和撞击方向的变化

如果您不熟悉物理模拟,那么这是30秒的运行时间:

  • 在物理模拟中创建代表每个图形精灵的“实体”
  • 身体通常比图形对应物更简单地定义,如圆形,方形或简单的多边形形状
  • 为了准确更新屏幕上的图形,首先要建立像素与米的比率。米是物理模拟中使用的名义(即组成)测量
  • 每次物理模拟“滴答”时,您都会相应地更新屏幕上的图形
  • 因此,如果物理模拟中的物体移动1米,则可能会将像素精灵变换为32像素

这是使用Box2d进行碰撞检测的好方法。 http://www.raywenderlich.com/606/how-to-use-box2d-for-just-collision-detection-with-cocos2d-iphone

享受

答案 1 :(得分:0)

其实很简单:

  1. 只需安排一个计时器:[自我安排:@selector(checkForCollision:)];

  2. 指定方法: - (void)checkForCollision:(ccTime)dt {}

  3. 在花括号中,使用CGRectMake为每个精灵制作CGRect。

  4. 然后在同一个方法中,只需调用:if(CGRectIntersectsRect){}

  5. 那很简单!

答案 2 :(得分:-1)

从技术上讲,当2个精灵相互作用或共享至少一个共同点时,它们就会发生碰撞。我对你的问题感到有些困惑。你是否在询问如何让精灵在屏幕上移动的方向,或者你是否在询问如何处理实际的碰撞(例如在碰撞时调用方法)?

相关问题