Как мне создать бесконечный / повторяющийся мир, который управляет вращением, как в этой игре:
http://bloodfromastone.co.uk/retaliation.html
Я закодировал свой вращающийся движущийся мир, имея такую иерархию, как эта:
Сцена
- mainLayer (CCLayer)
- вращениеLayer (CCNode)
- positionLayer (CCNode)
ВращенияLayer и positionLayer имеют одинаковый размер (4000x4000 px прямо сейчас).
Я вращаю весь мир, вращая вращение слоя, и перемещаю весь мир, перемещая положение слоя, так что игрок всегда остается в центре экрана устройства, и это мир, которыйдвигается и вращается.
Теперь я хотел бы сделать так, чтобы, если игрок достиг границ мира (мир перемещался так, что границы миров входили в контакт с границами экрана устройства), тогдамир «обернут» в противоположные границы, так что мир бесконечен.Если бы мир не вращался, это было бы легко, но теперь, когда это происходит, я понятия не имею, как это сделать.Я дурак в математике и в математическом мышлении, поэтому мне нужна помощь здесь.
Теперь я не думаю, что мне нужна какая-либо помощь, связанная с cocos2d-iphone здесь.Мне нужен какой-то способ вычислить, находится ли мой игрок за пределами мира, а затем какой-то способ вычислить, какую новую позицию я должен дать миру, чтобы обернуть мир.
Я думаю, мне нужно вычислитьрадиус круга, который будет моим литейным заводом внутри квадратного мира, независимо от того, под каким углом находится квадратный мир, гарантирующий, что видимый прямоугольник (экран) всегда будет находиться внутри границ квадратного мира.И тогда мне нужен способ вычислить, находятся ли границы видимого прямоугольника за пределами круга границ, и если это так, мне нужен способ вычислить новую противоположную позицию в круге границ, чтобы переместить мир.Поэтому для иллюстрации я добавил 5 изображений.
Видимый прямоугольник внутри круга окружностей внутри повернутого квадратного мира:
Верх видимого прямоугольника, ударяющего границы круга внутри повернутого квадратаworld:
Повернутый квадратный мир перемещен в противоположную вертикальную позицию, так что нижняя часть видимого прямоугольника теперь пересекает границы круга внутри повернутого мира:
Другой примерверхней части видимого прямоугольника, попадающего в круг границ внутри повернутого квадратного мира, чтобы проиллюстрировать другой сценарий:
И снова повернутый квадратный мир переместился в противоположную вертикальную позицию, так что дно видимого прямоугольника теперь пересекает границыкруг внутри вращающегося мира:
Перемещение позиции Layer в не повернутой ситуации - это математика, которую я понял, поскольку я сказал, что могу понять это, пока мир делаетне получается вращаться, но это так.World / CCNode (positionLayer), который перемещается / позиционируется, находится внутри world / CCNode (revolutionLayer), который вращается.Якорная точка для вращающегося слоя, который вращается, всегда находится в центре экрана, но когда перемещаемый элемент PositionLayer находится внутри вращающегося слоя, он вращается вокруг точки привязки вращающего слоя.И тогда я теряюсь ... Когда я, например, перемещаю positionLayer достаточно вниз, чтобы его верхняя граница достигла верхней части экрана, мне нужно обернуть этот positionLayer, как описывает JohnPS, но не так просто, мне нужно обернуть его в векторном видена вращение слоя вращения CCNode.Это я не знаю, как сделать.
Спасибо
Søren