Цель c индикатором прогресса в игре Sprite Kit
Я пытаюсь создать визуальный элемент (тип индикатора выполнения) в игре Sprite Kit, который представляет "силу", с которой бросается объект. Поэтому при касании экрана прибор начинает накапливаться. Слишком долгое удержание приводит к тому, что панель перезагружается и действует бесконечно, пока пользователь не отпустит палец с экрана. После чего соответствующая позиция силы метра приведет к расстоянию, на которое будет брошен объект. Единственные элементы, которые я знаю, как это делать - это работать с штрихами Began, touchesEnded. Пожалуйста, помогите - не могу найти что-нибудь в сети для target-c & sprite kit по этому вопросу (также проверено на github).
1 ответ
Много способов сделать что-то подобное. Вам нужно иметь 2 ключевых вещи. 1) Что-то, чтобы отслеживать, касается ли пользователь прикосновения. 2) Что-то, чтобы отслеживать, как долго пользователь продолжает касание.
Чтобы отследить, действительно ли пользователь касается, вы можете использовать BOOL, который вы установили бы в true в методе touchesBegan.
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
myBool = true;
}
В методе touchesEnded вы снова устанавливаете BOOL после завершения касания.
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
myBool = false;
// your throw the object code.
// strength based on myInt.
// do not forget to set the myInt back to 0.
}
Вторая проблема заключается в отслеживании продолжительности касания. Есть много способов сделать это. Одним из них является использование метода обновления.
-(void)update:(CFTimeInterval)currentTime {
if(myBool) {
myInt++;
// code for modifying the running meter bar
if(myInt > 600) {
// max time reached. reset the meter bar
myInt = 0;
}
}
}
Я использовал 60 в качестве примера. Помните, что SK работает с 60 FPS по умолчанию, что означает, что 600 равняется 10 секундам.
Вышеприведенный код является очень общим кодом и должен послужить вам примером того, что можно сделать. Например, нет никаких допусков на любые другие прикосновения, кроме функции броска. Возможно, вы захотите использовать кнопку броска вместо всего экрана. Остальное для вас, чтобы выяснить.