1

所以我在花栗鼠方面遇到了一些问题,请意识到我是新手,并且正在学习有关花栗鼠的许多想法,如果您有任何好的书籍、资源或网站可以用来学习花栗鼠,那就太好了(请只有当前的指南,我已经浏览了许多带有过时命令的旧指南并且非常沮丧)。

但关于我的主要问题,我正在使用 Chipmunk 并使用了我在在线网络资源上找到的“花栗鼠教程”代码。我正在尝试将图像(UIImageView *ball;)附加到该ballBody->data部分,并尝试更新图像但似乎无法弄清楚,代码有效,但图像仅移动到 ballBodys 初始位置。

这是我正在使用的代码示例,如果我应该提供更多信息,请告诉我!

这是我调用来更新花栗鼠帧的计时器,当我调用“cpSpaceHashEach(space->activeShapes, &updateShape, nil);”时 代码部分我收到错误,即在 struct cpspace 中没有名为“活动形状”的对象,并且 cpSpaceHash 有一个隐式声明

// Called at each "frame" of the simulation
- (void)tick:(NSTimer *)timer {
    // Tell Chipmuck to take another "step" in the simulation
    cpSpaceStep(space, 1.0f/60.0f);

    // Call our function for each shape
    cpSpaceHashEach(space->activeShapes, &updateShape, nil);
}
4

1 回答 1

1

我认为您正在查看 5.x 的教程并使用 Chipmunk 6.x。

“cpSpace.activeShapes”在 5.x 中被记录为私有成员,现在已经不存在了。cpSpaceHashEach() 没有记录。不建议使用您提供的代码段来迭代形状,因为它会导致很多未定义的行为,但是每个人都这样做了。

在 6.x 中,您应该这样做,因为它不使用任何私有、未记录或未定义的功能:

cpSpaceEachShape(space, updateShape, NULL);

也就是说,我仍然不建议以这种方式迭代形状。您应该自己保留一份清单,这样您最终就不需要跳过静态形状等。

您应该查看 Chipmunk 下载页面上的 Simple Objective-Chipmunk 教程或 Snap 示例项目:http: //chipmunk-physics.net/downloads.php

于 2011-11-04T16:43:24.483 回答