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个可能的“真”值中的一个。