Проблема с позиционированием CCSprite поверх других CCSprite при анимации экрана вверх?

В моем приложении у меня есть персонаж с ногами, и я хочу сделать так, чтобы в моем приложении он выглядел так, как будто он стоит поверх другого CCSprite, когда он движется ВВЕРХ по экрану (анимация) . Все работает нормально, ЗА ИСКЛЮЧЕНИЕМ есть небольшая проблема с позиционированием, которую я просто не могу понять! Позвольте мне объяснить проблему немного подробнее: когда персонаж находится поверх CCSprite, кажется, что персонаж перемещается вверх/вниз примерно на 10 пунктов с очень быстрыми интервалами.

Кто-нибудь знает, почему это происходит?

Спасибо!

ПОСЛЕДНИЕ РЕДАКТИРОВАНИЯ: Я хотел бы еще раз поблагодарить вас за помощь во всем этом. Во-первых, я удалил все свои другие правки, так как пост стал слишком длинным, и если вам по какой-либо причине нужно сослаться на более старые правки, просто просмотрите мою историю правок!

Итак, примерно после часа тестирования я сузил его до одной проблемы, которую вы упомянули ранее: операторы if, проверяющие, сталкиваются ли персонаж и часть пола, НЕвызываются на каждой итерации. в игровом цикле, когда они ДОЛЖНЫбыть (насколько они выглядят в пользовательском интерфейсе).

Мой журнал cocosGameLoop находится за пределами и перед всем кодом обнаружения столкновений, но все еще находится в игровом цикле.f

Я также заметил в своих NSLog паттерн, как вы можете видеть ниже:

2012-05-27 17:00:54.791 App[2769:707] cocosGameLoop
2012-05-27 17:00:54.811 App[2769:707] cocosGameLoop
2012-05-27 17:00:54.825 App[2769:707] cocosGameLoop
2012-05-27 17:00:54.841 App[2769:707] cocosGameLoop
2012-05-27 17:00:54.858 App[2769:707] cocosGameLoop
2012-05-27 17:00:54.874 App[2769:707] cocosGameLoop
2012-05-27 17:00:54.891 App[2769:707] cocosGameLoop
2012-05-27 17:00:54.908 App[2769:707] cocosGameLoop
2012-05-27 17:00:54.924 App[2769:707] cocosGameLoop
2012-05-27 17:00:54.928 App[2769:707] collisiontwo
2012-05-27 17:00:54.929 App[2769:707] two
2012-05-27 17:00:54.941 App[2769:707] cocosGameLoop
2012-05-27 17:00:54.944 App[2769:707] collisiontwo
2012-05-27 17:00:54.945 App[2769:707] two
2012-05-27 17:00:54.958 App[2769:707] cocosGameLoop
2012-05-27 17:00:54.974 App[2769:707] cocosGameLoop
2012-05-27 17:00:54.991 App[2769:707] cocosGameLoop
2012-05-27 17:00:55.008 App[2769:707] cocosGameLoop
2012-05-27 17:00:55.025 App[2769:707] cocosGameLoop
2012-05-27 17:00:55.043 App[2769:707] cocosGameLoop
2012-05-27 17:00:55.058 App[2769:707] cocosGameLoop
2012-05-27 17:00:55.076 App[2769:707] cocosGameLoop
2012-05-27 17:00:55.078 App[2769:707] collisiontwo
2012-05-27 17:00:55.078 App[2769:707] two
2012-05-27 17:00:55.091 App[2769:707] cocosGameLoop
2012-05-27 17:00:55.094 App[2769:707] collisiontwo

Что я также заметил, когда I NSLog координата Y символа, так это то, что он остается около одной и той же точки в течение нескольких взаимодействий (даже когда он должен сталкиваться, чтобы он совпадал с набором вызовов cocosGameLoop в NSLog выше), затем, когда он фактически сталкивается (программно), он перемещается примерно на 14 пунктов от координаты Y ранее. Таким образом, существует джиттер около 14 пунктов вверх/вниз.

Суть в том, как мне сделать так, чтобы код коллизий вызывался КАЖДОЙ итерации и не колебался около 14 точек? Я не хочу менять точки привязки, так как это испортит позиционирование моей анимации и так далее. В любом случае, что вы порекомендуете? Также имейте в виду, что я использую Box2D только для обнаружения столкновений, поэтому я должен хранить все в коде Cocos2D.

Наконец, я думал, что в моем приложении были ошибки округления точек из-за гравитации, но даже когда я возился со значениями, такими как изменение силы тяжести на целое число, это не исправило мерцание, так что это 100% проблема Я упомянул выше.

В любом случае, в этом суть проблемы, и я думаю, что вы можете видеть то, чего я просто не вижу! Дайте мне знать, что вы думаете :)

Большое спасибо!

5
задан SimplyKiwi 31 May 2012 в 01:40
поделиться