gpt4 book ai didi

ios - 碰撞检测和 animateWithDuration

转载 作者:行者123 更新时间:2023-11-29 12:52:19 26 4
gpt4 key购买 nike

我试图让“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 的动画来显示跳跃时的运动了。

非常感谢

日本

最佳答案

当使用 UIView 动画方法为各种属性设置动画时,动画实际上是在称为表示层的东西上执行的。但是当您使用 View 的 frame 访问器时,它会访问模型层(而不是表示层),模型层保存最新的值(因此它保存动画后的指定帧)。

您应该使用 luke.layer.presentationLayer.frame 检查“luke”的位置。

关于ios - 碰撞检测和 animateWithDuration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22122160/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com