我试图让'luke'跳过一个对象,以确保游戏不会结束,但他确实这样做,但是即使他避开了该对象,游戏仍会结束,就像luke在动画过程中没有离开他的原始位置一样。
我在-(void)touchesBegin
中使用了UIView animateWithDuration来尝试实现这一目标。
[UIView animateWithDuration:3
animations:^
{
luke.center = CGPointMake(luke.center.x +0, luke.center.y -60);
}
completion:^(BOOL completed)
{
if (completed)
{
[UIView animateWithDuration:3
animations:^
{
luke.center = CGPointMake(luke.center.x +0, luke.center.y +60);
}];
}
我还使用
CGRectIntersectsRect
告诉我两个对象何时碰撞-(void)collision {
if (CGRectIntersectsRect(luke.frame, smallboulder.frame)) {
[self endgame];
}
if (CGRectIntersectsRect(luke.frame, largeboulder.frame)) {
[self endgame];
}
if (CGRectIntersectsRect(luke.frame, cactus.frame)) {
[self endgame];
}
最终,我能否使用设置为
NSArray
的动画来显示跳跃时的运动。非常感谢
J.P
最佳答案
当使用UIView
动画方法制作各种属性的动画时,实际上是在称为表示层的东西上执行动画。但是,当您使用视图的frame
访问器时,它会访问模型层(而不是表示层),该模型层保存最新的值(因此在动画后保存指定的帧)。
您应该使用luke.layer.presentationLayer.frame
检查“luke”的位置。
关于ios - 碰撞检测和AnimateWithDuration,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22122160/