Итак, я пытаюсь воссоздать один из этих «виртуальных джойстиков» на некоторых из этих игр для iPhone. И в основном, проблема заключается в том, что я могу следить за тем, чтобы пользователь касался круга (это «виртуальный джойстик»), и я тоже могу перемещать предмет (или, по крайней мере, смог его переместить, потому что с тех пор я испортил вокруг с ним). Но я не могу дать ему диапазон.Проблемы с виртуальным джойстиком
Какая черта я имею в виду под диапазоном?
Позвольте мне, надеюсь, правильно объяснить, что я имею в виду. Поэтому, когда вы возитесь с реальным джойстиком на чем-то вроде контроллера Playstation, вы, очевидно, не будете тащить его повсюду, как я мог, с этим кругом, который я описывал. Таким образом, он имеет диапазон, который находится в пределах воображаемого круга, который вы не видите.
Я попытался следующие:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint currentPosition = [touch locationInView:self.view];
if (g == true) {
if (joystick.center.x > 330 && currentPosition.x > 330 || joystick.center.x < 130 && currentPosition.x < 130) {
joystick.center = CGPointMake(joystick.center.x, currentPosition.y);
j = true;
}
if (joystick.center.y > 508 && currentPosition.y > 508 || joystick.center.y < 308 && currentPosition.y < 308) {
joystick.center = CGPointMake(currentPosition.x, joystick.center.y);
j = true;
}
if (j == false) {
joystick.center = CGPointMake(currentPosition.x, currentPosition.y);
}
}
}
Одно замечание, прежде чем я начну объяснять, что моя логика для моей попытки, джойстик расположен на экране (230, 408), и я не делал что-либо в систему координат (поэтому она основана на верхнем левом углу). Теперь позвольте мне объяснить, что это такое:
- Ну сначала я получаю координаты касания с первыми двумя строками кода в методе.
- Тогда
if (g == true)
действительно должен делать, если касание находится по кругу или нет, и устанавливаетсяtouchesBegan
. - Тогда второе, если проверяет, превышает ли положение джойстика x 330 или меньше 130, что даст радиус воображаемого диапазона, который является кругом. Также обратите внимание на дополнительные
&& currentPosition.x > 330
иcurrentPosition.x < 130
, это означает, что человек перемещает виртуальный джойстик обратно в центр, так как вы не хотите, чтобы пользователь не мог этого сделать. else if
делает то же, что и 3, за исключением направления y.- Для окончательного
if
используется bool j, чтобы определить, выполнены ли другие два оператора `i.
Этот план не работает явно, иначе я бы не просил вас о помощи, так вы знаете, что я делаю неправильно?
Спасибо, потребовалось немного Мессинг вокруг, но я получил его! – 2010-07-20 06:23:09