【发布时间】:2014-12-05 05:55:56
【问题描述】:
我创建的角色经常与旨在导致游戏结束的障碍重叠。角色是flyCopter,它是一组构成整个角色的png。 blockTmp 也是由 png 组合而成的障碍物。
有时角色没有足够的碰撞,你可以在没有游戏结束的情况下逃脱,但显然它不应该重叠。当他们两个瞬间碰撞时,应该游戏结束了。奇怪的是,有时它会在接触时“死亡”,而有时它确实需要重叠。
谢谢
//字符冲突
-(void)checkGameOver{
if(GAMESTART){
if(flyCopter.position.x >= CGRectGetMaxX(self.frame) - flyCopter.copterWidth/2 - 6){
[self showOver];
}
if(flyCopter.position.x <= CGRectGetMinX(self.frame) + flyCopter.copterWidth/2 + 6){
[self showOver];
}
[self compareCP:blockTmp1 :flyCopter];
[self compareCP:blockTmp2 :flyCopter];
if(flyCopter.position.y <= blockTmp1.position.y - 0 + blockTmp1.size.height + 0)
if(flyCopter.position.x <= blockTmp1.position.x +20 + blockTmp1.size.width + 0)
{
[self compareCP:blockTmp3 :flyCopter];
[self compareCP:blockTmp4 :flyCopter];
}
[self compareCP:blockTmp5 :flyCopter];
[self compareCP:blockTmp6 :flyCopter];
if(flyCopter.position.y <= blockTmp5.position.y - 0 + blockTmp5.size.height + 0)
if(flyCopter.position.x <= blockTmp5.position.x +20 + blockTmp5.size.width + 0)
{
[self compareCP:blockTmp7 :flyCopter];
[self compareCP:blockTmp8 :flyCopter];
}
[self compareCP:blockTmp9 :flyCopter];
[self compareCP:blockTmp10 :flyCopter];
if(flyCopter.position.y <= blockTmp9.position.y - 0 + blockTmp9.size.height + 0)
if(flyCopter.position.x <= blockTmp9.position.x +20 + blockTmp9.size.width + 0)
{
[self compareCP:blockTmp11 :flyCopter];
[self compareCP:blockTmp12 :flyCopter];
}
}
}
-(void)compareCP:(SKSpriteNode*)flyCopters : (SKSpriteNode*)blocks{
if(flyCopters){
if ([blocks intersectsNode:flyCopters]) {
[self showOver];
}
}
}
【问题讨论】:
标签: objective-c sprite-kit collision-detection