gpt4 book ai didi

ios - 为什么对象会与 CGRectIntersectsRect 重叠?

转载 作者:行者123 更新时间:2023-11-28 22:00:11 26 4
gpt4 key购买 nike

我正在制作一款益智游戏,您必须绕过障碍物移动物体才能到达目标。但是,由于某些原因,当我使用 CGRectIntersectsRect 时对象重叠。我希望对象在彼此接触边缘时停止,而不是在它们相互重叠时停止。当前代码如下:

-(void)objectObstacleCollision {

if (CGRectIntersectsRect(object.frame, obstacle1.frame)) {
xMotion = 0;
yMotion = 0;

if (objectMovingUp == YES) {
objectCrashedUp = YES;
objectMovingUp = NO;

if (objectCrashedUp == YES && objectMovingUp == NO) {

up.hidden = YES;
down.hidden = NO;
right.hidden = NO;
left.hidden = NO;
}
}

这会导致物体在撞击时重叠,从而导致在尝试沿不同方向移动物体时出现问题。经过多次不同的尝试,在我的一生中,当物体碰到有障碍物的边缘时,我无法让它停下来。我怎样才能做到这一点?

最佳答案

如果两个矩形共享一条边,它们不相交,它们接触。例如,这段代码:

CGRect rect1 = CGRectMake(0, 0, 100, 100);
CGRect rect2 = CGRectMake(0, 100, 100, 100);

if (CGRectIntersectsRect(rect1, rect2)) {
NSLog(@"The intersection rect is %@", NSStringFromCGRect(CGRectIntersection(rect1, rect2)));
} else {
NSLog(@"The rects don't intersect.");
}

将输出“矩形不相交。”

没有内置的 CGRect 函数来确定两个矩形是否接触,但您可以编写一个遍历 4 种可能性的函数。

关于ios - 为什么对象会与 CGRectIntersectsRect 重叠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25373752/

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