gpt4 book ai didi

objective-c - 不规则形状的碰撞检测

转载 作者:行者123 更新时间:2023-12-03 17:25:26 28 4
gpt4 key购买 nike

我已经在一个非常复杂的问题上工作了一段时间。现在,我在这里发帖,希望有人能给我解决方案的提示。

正如主题中所述,该问题与不规则形状 (UIView) 上的碰撞检测有关。

到目前为止我做了什么:

使用THIS作为起点,我创建了一个 UIImageView 子类,可以检查其框架属性上的 alpha/非 alpha 点。在我的对象的 UIPanGestureRecognizer 选择器上,我附加了一个检查来查看是否将其移动到障碍物(不是 alpha)上:

- (void)panning:(id)sender {
UIPanGestureRecognizer = (UIPanGestureRecognizer *)sender;

if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) {
startPoint = CGPointZero;
oldPoint = CGPointZero;
return;
}
actualPoint = [(UIPanGestureRecognizer*)sender translationInView:parentView];

if(CGAffineTransformIsIdentity(panning)) {
panning = CGAffineTransformMakeTranslation(actualPoint.x - startPoint.x, actualPoint.y - startPoint.y);
} else {
panning = CGAffineTransformTranslate(panning, actualPoint.x - startPoint.x, actualPoint.y - startPoint.y);
}

[self setTransform:panning];

for(UIView *anObstacle in obstaclesArray) {
CGRect intersection = CGRectIntersection(self.frame, anObstacle.frame);
if([anObstacle checkAlpha:intersection] != NULL) {
NSLog(@"BOOOOOOOOOOOM");
}
}
}

除了性能之外,一切都运行良好。对于生产应用程序来说,检查速度太慢。

是否有任何我不知道的解决方法或解决方案来解决此问题?

希望能说清楚,最好的问候

最佳答案

能否在不规则物体周围生成一个圆,以减少初始计算,然后如果与圆发生碰撞,则继续检查是否真的发生碰撞。根据在圆上检测到碰撞的位置,检查的点集可能会减少。

关于objective-c - 不规则形状的碰撞检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6561860/

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