我正在制作一款汽车在屏幕上移动的游戏。汽车从屏幕的四个侧面生成,移动到屏幕的另一侧。
当我触摸汽车时,汽车应该以另一种速度移动。我实现了一切,但我被困在了矩阵中。在触摸上。
我将每辆生成的汽车都放在一个阵列中,然后给每辆汽车一个标签值。
这就是我的CCtouchbegan()
for (CCSprite targetL1 : _targetsL1)
{
System.out.println("tag is targetL1 "+ targetL1.getTag());
if(targetL1.getTag()==1 ||targetL1.getTag()==3||targetL1.getTag()==4)
{
targetL1Rect = CGRect.make(targetL1.getPosition().x - ((winSize.width/8.0f)/ 2.0f),
targetL1.getPosition().y - ((winSize.height/10.0f) / 2.0f),
(winSize.width/8.0f),
(winSize.height/10.0f));
}else if(targetL1.getTag()==2 ){
targetL1Rect = CGRect.make(targetL1.getPosition().x - ((winSize.width/4.0f) / 2.0f),
targetL1.getPosition().y - ((winSize.height/10.0f) / 2.0f),
(winSize.width/4.0f),
(winSize.height/10.0f));
}
for (CCSprite targetL2 : _targetsL2)
{
if(targetL2.getTag()==5 ||targetL2.getTag()==7||targetL2.getTag()==8)
{
targetL2Rect = CGRect.make(targetL2.getPosition().x - ((winSize.width/8.0f)/ 2.0f),
targetL2.getPosition().y - ((winSize.height/10.0f) / 2.0f),
(winSize.width/8.0f),
(winSize.height/10.0f));
}else if(targetL2.getTag()==6 ){
targetL2Rect = CGRect.make(targetL2.getPosition().x - ((winSize.width/4.0f) / 2.0f),
targetL2.getPosition().y - ((winSize.height/10.0f) / 2.0f),
(winSize.width/4.0f),
(winSize.height/10.0f));
}
for (CCSprite targetR1 : _targetsR1)
{
if(targetR1.getTag()==9 ||targetR1.getTag()==11||targetR1.getTag()==12)
{
targetR1Rect = CGRect.make(targetR1.getPosition().x - ((winSize.width/16.0f)/ 2.0f),
targetR1.getPosition().y - ((winSize.height/5.0f)/2.0f),
(winSize.width/16.0f),
(winSize.height/5.0f));
}else if(targetR1.getTag()==10 ){
targetR1Rect = CGRect.make(targetR1.getPosition().x - ((winSize.width/15.0f)/2.0f),
targetR1.getPosition().y - ((winSize.height/2.5f)/2.0f),
(winSize.width/15.0f),
(winSize.height/2.5f));
}
for (CCSprite targetR2 : _targetsR2)
{
if(targetR2.getTag()==13 ||targetR2.getTag()==15||targetR2.getTag()==16)
{
targetR2Rect = CGRect.make(targetR2.getPosition().x - ((winSize.width/16.0f)/ 2.0f),
targetR2.getPosition().y - ((winSize.height/5.0f)/2.0f),
(winSize.width/16.0f),
(winSize.height/5.0f));
}else if(targetR2.getTag()==14 ){
targetR2Rect = CGRect.make(targetR2.getPosition().x - ((winSize.width/15.0f)/2.0f),
targetR2.getPosition().y - ((winSize.height/2.5f)/2.0f),
(winSize.width/15.0f),
(winSize.height/2.5f));
}
if (CGRect.intersects(targetL1Rect, targetL2Rect))
{
CCDirector.sharedDirector().replaceScene(GameOverLayer.scene("you lose"));
}
if (CGRect.intersects(targetL1Rect, targetR1Rect))
{
CCDirector.sharedDirector().replaceScene(GameOverLayer.scene("you lose"));
}
if (CGRect.intersects(targetL1Rect, targetR2Rect))
{
CCDirector.sharedDirector().replaceScene(GameOverLayer.scene("you lose"));
}
if (CGRect.intersects(targetL2Rect, targetR1Rect))
{
CCDirector.sharedDirector().replaceScene(GameOverLayer.scene("you lose"));
}
if (CGRect.intersects(targetL2Rect, targetR2Rect))
{
CCDirector.sharedDirector().replaceScene(GameOverLayer.scene("you lose"));
}
if (CGRect.intersects(targetR1Rect, targetR2Rect))
{
CCDirector.sharedDirector().replaceScene(GameOverLayer.scene("you lose"));
}
// write game over here
}
}
}
}
}
当我触摸汽车时,它会工作一段时间,有时它不起作用。有时当同一侧有两辆车时,他们都会一触即发。
我没有得到关于如何管理汽车触摸检测的想法。
请帮帮我。