gpt4 book ai didi

objective-c - 我如何表达 "if object intersects ' 这个数组中的任何对象'然后......”

转载 作者:行者123 更新时间:2023-12-03 17:57:05 24 4
gpt4 key购买 nike

在学习 Xcode 和 Objective-C 的同时尝试开发一个简单的游戏。

我正在尝试让一个从屏幕顶部掉落的物体落在平台上。有多个平台都是UIImageView。

我想对对象可以登陆的平台使用一个数组,而不是为每个平台键入 if 语句。我查看了其他人的问题,并根据他们的想法尝试想法。这是我迄今为止在游戏循环中所拥有的内容:

CGRect platformFrame = [(UIView *)[platformArray objectAtIndex:i] frame];
if (CGRectIntersectsRect(object.frame, platformFrame)) {
objectVelocity.y += gravity.y;
objectVelocity.x = 0;
}

这就是我在“viewDidLoad”中将对象添加到数组中的内容:

platformArray = [[NSMutableArray alloc] init];
[platformArray addObject:platform1];
[platformArray addObject:platform2];
[platformArray addObject:platform3];

此时返回错误:“线程 1:程序收到信号:“SIGARBT”。”

我读到这是使用 NSMutableArray 的结果。

由于错误,目前我无法判断我的代码是否有效。所以我想知道是否有更好的方法来做到这一点,或者解决 SIGARBT 错误的方法。

任何帮助将不胜感激。

更新:感谢您的快速回复!希望这会起作用,但不幸的是我仍然收到 SIGARBT 错误,所以我看不到结果。

至于有关此错误的更多详细信息,当我尝试运行该应用程序时,它会出现,尽管在此之前它声明“没有问题”。

错误出现在 main.m 中:

int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}

错误出现在以“return”开头的行

我读到使用 NSMutableArray 可能会导致这种情况。

“即使您将可变对象设置为值,从 NSUserDefaults 返回的值也是不可变的。”

所以我不知道如何解决这个问题。

最佳答案

如果您想对platformArray数组中的每个对象进行检查,您可以使用现在在for循环中的代码并进行一些小的修改:

for(UIView * platform in platformArray) {
if(CGRectIntersectsRect(object.frame, platform.frame)) {
// Collision
objectVelocity.y += gravity.y;
objectVelocity.x = 0;
break;
}
}

如果您可以更具体地说明您收到的 SIGABRT(还有其他消息吗?),我们可以为您提供更多帮助。

关于objective-c - 我如何表达 "if object intersects ' 这个数组中的任何对象'然后......”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11549192/

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