Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 隐藏时如何停止碰撞_Objective C_Collision Detection - Fatal编程技术网

Objective c 隐藏时如何停止碰撞

Objective c 隐藏时如何停止碰撞,objective-c,collision-detection,Objective C,Collision Detection,我知道以前有人问过这个问题,但没有答案 我有使用以下代码与播放器链接的对象: if (CGRectIntersectsRect(Player.frame, obstacle.frame)) { [self finish]; // later on in the code i then hide the obstacle obstacle.hidden = YES; } 但当对象隐藏时,它仍会检测到远处有碰撞,以便在对象隐藏时删除碰撞?您可能需要提供更多信息,但为什么不

我知道以前有人问过这个问题,但没有答案

我有使用以下代码与播放器链接的对象:

if (CGRectIntersectsRect(Player.frame, obstacle.frame)) {
    [self finish];
    // later on in the code i then hide the obstacle

    obstacle.hidden = YES;
}

但当对象隐藏时,它仍会检测到远处有碰撞,以便在对象隐藏时删除碰撞?

您可能需要提供更多信息,但为什么不在执行碰撞代码之前检查障碍物是否隐藏

if (obstacle.hidden != YES) {
  // collision-code
}

隐藏对象后,是否可以将检测碰撞的代码移动到某个点?或者在
if
语句中添加一些“is object not hidden”(对象是否未隐藏)逻辑。如果障碍物是数组对象,则可以使用
[array removeAllObjects]或分配
障碍=空
不应根据值
YES
NO
明确检查变量。使用
if(障碍物.隐藏)
if(!障碍物.隐藏)
。如果出于某种原因,有人用不同的值设置布尔值,而不是
YES
NO
,那么
value==YES
value==NO
都不会被认为是真的。当你在Objective-C中时,你应该将其设置为YES或NO。。。您应该将布尔变量设置为是和否。。。但是你不应该把它们与是和否进行对比。布尔不是一个纯二进制变量。它使用的C类型实际上有256个不同的值。其中一个值(零)的计算结果为“假”,其余所有值的计算结果为“真”。虽然与否比较不是什么大问题,但与是比较只适用于255个可能的“真”值中的一个。