我的游戏几乎完成了我的多点触控代码,但我又遇到了一个问题。这是在Cocos2d btw:)
中完成的玩家左侧有一个dpad,右侧有一个按钮,如果我按住dpads并按住跳跃按钮,它可以正常工作,这样他就可以向右跑并跳跃。
问题是,一旦我将手指从跳跃按钮上移开,所有操作都会停止,所以我必须抬起并再次按下我的手指在dpad上...
这是我的cctouchesended代码
-(void) ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
////when the user has stopped touching the screen set the variables
////back to false to stop its movement////
//self.myTouch = nil;
for (UITouch *touch in touches)
{
if (moveRight == TRUE) {
[player stopAction:RunForward];
}
if (moveLeft == TRUE) {
[player stopAction:RunBackwards];
}
moveLeft = FALSE;
moveRight = FALSE;
// jump = FALSE;
}
}
答案 0 :(得分:0)
最好将逻辑映射到2个按钮。或者至少是为了跳跃。 当前代码的问题在于您没有检查您抬起哪根手指。您可以进行检查,如果结束的触摸位于屏幕左侧,则停止移动。
此外,您无需将BOOL值与TRUE进行比较。只是做,“如果(moveRight)”。它好多了
答案 1 :(得分:0)
您需要继续引用HASH(touch.hash)并保存CCTouchesBegan
然后在你现在的函数(发行版)中检查哪个哈希已被释放。
这样:
在ccTouchesBegan函数中,检查按下了哪个按钮:
if(CCRectContainsPoint(sprite1.boundingbox,touchlocation)) { rightSideButtonHash = touch.hash; )
在发布中你检查touch.hash对着rightSideButtonHash,你知道它是否是那个触摸!