Game Lags, когда игрок прыгает в первый раз [дублировать]

Я придумал очень подходящую реализацию, используя itertools.product в этом случае (это реализация, где вы хотите все комбинации

unique_perm_list = [''.join(p) for p in itertools.product(['0', '1'], repeat = X) if ''.join(p).count() == somenumber]

, это по существу комбинация (n над k) с n = X и somenumber = k itertools.product () итерации от k = 0 до k = X, последующая фильтрация с подсчетом гарантирует, что в список будут внесены только перестановки с правильным количеством единиц. Вы можете легко увидеть, что это работает, когда вы вычислить n над k и сравнить его с len (unique_perm_list)

3
задан rmaddy 12 April 2015 в 15:20
поделиться

2 ответа

Используйте SKAction.playSoundFileNamed . Когда вы создаете экземпляр SKAction раньше времени, он выполняет всю необходимую подготовку для выполнения действия (в данном случае, воспроизведения звука) без запаздывания во время игрового процесса. Чтобы запустить действие (воспроизвести звук), вызовите runAction на узле - это может быть любой узел, даже сама сцена.

Так как не имеет значения, какой узел вы используете для звуковых целей, используйте то, что наиболее удобно. Например, если вы просто воспроизводите звук, вы можете называть runAction на сцене. Но если ваш звук является частью группы действий или последовательности, которые, скажем, оживляют спрайт, вы можете сделать звук частью действия этой последовательности и воспроизвести ее на спрайте, который вы анимации.

См. Руководство по программированию SpriteKit .


Не связанный свиток Swift: используйте let вместо var для ссылок, которые не будут меняться. Это может помочь вам избежать появления ошибок позже, и, вероятно, это поможет компилятору оптимизировать ваш код.

5
ответ дан rickster 15 August 2018 в 22:14
поделиться
  • 1
    Я добавил это туда, где происходит контакт между героем и монетой, и я получаю сообщение об ошибке: пусть playSound = SKAction.playSoundFileNamed («монета», waitForCompletion: true) – newtocoding 12 April 2015 в 17:39
  • 2
    Это ошибка, которую я получаю: *** Завершение приложения из-за неперехваченного исключения «NSInvalidArgumentException», причина: «Ресурсная монета не может быть найдена в основном пакете» – newtocoding 12 April 2015 в 17:41
  • 3
    Он работает, я забыл поместить .wav. Спасибо, что работает отлично! – newtocoding 12 April 2015 в 17:48
  • 4
    Могу ли я остановить звук, потому что моя игра собирает монеты после смерти героя, и я хочу, чтобы звук не играл, когда это происходит? Благодаря! – newtocoding 12 April 2015 в 17:53
  • 5
    Вы имеете в виду, что хотите отрезать все звучащие звуки, когда герой умирает, или предотвратить столкновения с мертвым героем от воспроизведения звука? Для первого см. runAction:withKey: и removeActionForKey: . Для последнего проверьте, мертв ли ​​герой, прежде чем воспроизводить звук. – rickster 12 April 2015 в 17:56

вы не должны вызывать prepareToPlay при столкновении, prepareToPlay устанавливает звуковой буфер, делайте это в своей функции didMoveToView

0
ответ дан Knight0fDragon 15 August 2018 в 22:14
поделиться
  • 1
    все еще есть отставание в моей игре, когда я помещаю prepareToPlay в файл didMoveToView. – newtocoding 12 April 2015 в 14:54
Другие вопросы по тегам:

Похожие вопросы: