Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.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
更好的iPhone操纵杆_Iphone_Cocos2d Iphone_Joystick_D Pad - Fatal编程技术网

更好的iPhone操纵杆

更好的iPhone操纵杆,iphone,cocos2d-iphone,joystick,d-pad,Iphone,Cocos2d Iphone,Joystick,D Pad,最近我一直在为iPhone制作吃豆人。是的,我知道它在App store上,但是它是5美元,我自己做的更有趣。除了操纵杆外,一切都很好。在处理急转弯时,我不是很在行,而且我经常把自己背向鬼魂。显然,这令人难以置信地沮丧。我想知道是否有人遇到过类似的问题,他们是怎么解决的?当前,我的操纵手柄代码如下所示: -(BOOL) checkTouchesBegan: (CGPoint*) location { int converty = location->y-160; int convertx

最近我一直在为iPhone制作吃豆人。是的,我知道它在App store上,但是它是5美元,我自己做的更有趣。除了操纵杆外,一切都很好。在处理急转弯时,我不是很在行,而且我经常把自己背向鬼魂。显然,这令人难以置信地沮丧。我想知道是否有人遇到过类似的问题,他们是怎么解决的?当前,我的操纵手柄代码如下所示:

-(BOOL) checkTouchesBegan: (CGPoint*) location
{
int converty = location->y-160;
int convertx = location->x-240;

float ydif = (1.0)*(converty - y);
float xdif = (1.0)*(convertx - x);
float degrees = atan2f(xdif, ydif) * 57;
float squared = xdif*xdif + ydif*ydif;

if(degrees >= 45 && degrees < 135 && sqrt(squared) < 120)
{
    direction = 1;
    return YES;
}
else if(degrees < -45 && degrees >= -135 && sqrt(squared) < 120)
{
    direction = -1;
    return YES;
}
else if(degrees >= -45 && degrees < 45 && sqrt(squared) < 120)
{
    direction = 2;
    return YES;
}
else if(sqrt(squared) < 120)
{
    direction = -2;
    return YES;
}
return NO;
-(BOOL)检查触摸开始:(CGPoint*)位置
{
int converty=位置->y-160;
int convertx=位置->x-240;
浮动ydif=(1.0)*(converty-y);
浮点xdif=(1.0)*(convertx-x);
浮动度数=atan2f(xdif、ydif)*57;
浮点平方=xdif*xdif+ydif*ydif;
如果(度>=45&°rees<135&&sqrt(平方)<120)
{
方向=1;
返回YES;
}
否则,如果(度数<-45&&度数>=-135&&sqrt(平方)<120)
{
方向=-1;
返回YES;
}
否则,如果(度>=-45&&D<45&&sqrt(平方)<120)
{
方向=2;
返回YES;
}
否则如果(sqrt(平方)<120)
{
方向=-2;
返回YES;
}
返回否;
}

基本上,我检查触摸的位置,并根据触摸改变字符的方向


谢谢你的帮助

你有没有试过看cocos2D的“鬼鬼祟祟的操纵杆”?我看了一点,但我认为它不会有多大帮助。操纵杆的方式,我有它的工作原理完全一样。我遇到的问题是玩家的控制,因为玩家的拇指有时会滑入错误的区域,导致玩家自己又回到了一个鬼的位置。我不想这么说,但这可能意味着你对游戏杆的设计有问题。我同意。有一种方法可以优化操纵杆,使其工作更有效。这需要一些修补。我只是想知道是否有人遇到过类似的问题,并能就如何改进操纵杆提出建议。