我试图让'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
来显示跳跃时的动作。
非常感谢
JP
答案 0 :(得分:1)
当使用UIView
动画方法为各种属性设置动画时,动画实际上是在称为表示层的事物上执行的。但是当你使用视图的frame
访问器时,它会访问模型层(而不是表示层),它保存最新的值(因此它在动画后保留指定的帧)。
您应该使用luke.layer.presentationLayer.frame
检查“luke”的位置。