【问题标题】:Cocos2d - Creating collidable Sprites?Cocos2d - 创建可碰撞的精灵?
【发布时间】:2010-11-26 21:51:43
【问题描述】:

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

例如,一个精灵 spriteA 在屏幕上的固定位置。另一个精灵 spriteB 在屏幕上移动。 SpriteB 将与 spriteA 发生碰撞。如果这没有意义或您不理解,请告诉我,我将进一步详细说明。任何帮助表示赞赏。谢谢!

【问题讨论】:

    标签: iphone cocos2d-iphone


    【解决方案1】:

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

    物理模拟会告诉您两个物体是否重叠,并提供重量、滑度(摩擦)、速度和方向等物理属性,从而产生弹跳、滑动、真实的速度损失和撞击时改变方向等反应.

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

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

    这里有一篇关于使用 Box2d 进行碰撞检测的好教程。 http://www.raywenderlich.com/606/how-to-use-box2d-for-just-collision-detection-with-cocos2d-iphone

    享受

    【讨论】:

      【解决方案2】:

      其实很简单:

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

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

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

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

      就这么简单!

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 这是一个应该在评论中而不是在答案中提出的问题,因为您没有指定答案。他在问如何处理碰撞。
        猜你喜欢
        • 1970-01-01
        • 2012-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多