Как свернуть куб по ребрам в Unity 3D

Я хочу переместить куб, заставив его катиться по краям. Куб будет стоять на сетке x-z, и каждое его движение будет заставлять его стоять на другом квадрате сетки.

Игрок будет контролировать движение и сможет заставить куб катиться только в одном направлении за раз (влево, вправо, вперед или назад), но куб всегда должен стоять точно на вершине одного из квадратов сетки.

Я не думаю, что приложение силы к кубу поможет, потому что оно может сдвинуть его слишком сильно или слишком мало. Я хочу добиться чего-то вроде этого: https://www.youtube.com/watch?v=yaAIUYuNi84 но только в плоскости x-z. Обратите внимание, что на каждом углу куб может легко остановиться и изменить направление, потому что он никогда не движется слишком сильно или слишком мало.

Любые идеи о том, как подойти к этому?


person Adocad    schedule 10.06.2017    source источник
comment
Если вы не хотите применять силу (а вы не должны), я бы сделал для этого анимацию, это не должно быть очень сложно.   -  person Łukasz Motyczka    schedule 10.06.2017
comment
Я использую единство всего около недели, анимацию не тестировал. Что мне делать? Воспроизвести анимацию поворота для каждого перемещенного пространства? Например, когда куб перемещается на одну клетку, анимируется на один оборот?   -  person Adocad    schedule 10.06.2017
comment
Точно, вы можете создать простой клип в Unity для вращения. Это не должно быть очень сложно, так как это простое перемещение простого объекта.   -  person Łukasz Motyczka    schedule 11.06.2017


Ответы (1)


Если вы новичок в Unity, будет бесполезно рассказывать вам кучу кодов, поэтому я рассказываю вам, как это сделать, чтобы вы могли реализовать свои собственные коды.

Вы можете создать 4 пустых игровых объекта, которые всегда будут следовать за кубом на полу, и когда вы захотите повернуть куб, вы будете вращать куб вокруг пустых объектов.

Вы можете найти коды для следования за кубом и вращения куба на YouTube, и для начинающих поиск всегда хорош.

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

person Eren    schedule 10.06.2017
comment
Вы имеете в виду, что каждый из 4 пустых объектов будет расположен на каждом ребре куба? На самом деле мне нужно 6, потому что движение будет во всех направлениях. Тем не менее, если это так, мне придется вращать куб, используя rotateAround, верно? Я пытаюсь реализовать это прямо сейчас, дайте мне знать, если я ошибаюсь. Спасибо за ответ, и да, мой опыт работы с Unity составляет одну неделю :). - person Adocad; 11.06.2017
comment
@somezombie yes rotateAround будет работать, и в методе Update вы можете постоянно обновлять положение пустых объектов со смещением 1 или 3 пикселя на земле, и с этим можно сделать это только с 4 объектами, кроме этого вам нужно проверить с какой стороны находится куб, чтобы его можно было вращать - person Eren; 11.06.2017
comment
@somezombie попробуйте это, и, как я уже сказал, в любое время не стесняйтесь задавать вопросы, когда вы застряли :) - person Eren; 11.06.2017
comment
Я работаю над этим, я дам вам знать, как это происходит. Пустые объекты будут дочерними элементами куба, поэтому они будут вращаться вместе с ним. - person Adocad; 11.06.2017
comment
@somezombie хорошо, если вы сделаете объекты дочерними для куба, они будут вращаться вместе с кубом, но если вы не сделаете их дочерними и заставите их следовать за кубом по коду, тогда они не будут вращаться с помощью и с этим вы можете создать более чистый код :) - person Eren; 11.06.2017
comment
@somezombie, и в качестве дополнительного факта вам не нужен какой-либо код, чтобы следовать за кубом, если вы сделаете пустые объекты дочерними по отношению к кубу, они будут иметь ту же позицию локально по отношению к кубу, но будет сложнее достичь вашего решения, пока объекты вращающийся :) - person Eren; 11.06.2017
comment
Да с этим проблема. Если я сделаю их детьми куба, то графически они будут вращаться вместе с кубом, но логически их положение останется прежним относительно куба. - person Adocad; 11.06.2017
comment
@somezombie, вы вращаете куб по мировым координатам, может возникнуть проблема с созданием объектов дочерними элементами куба, но вы можете попробовать оба из них и посмотреть, какой из них работает лучше :) - person Eren; 11.06.2017
comment
Спасибо за помощь. На данный момент мне удалось переместить куб на одну позицию, но это ответ, который я искал; помогите как подойти к вопросу. Таким образом, в основном для перемещения в любом направлении на плоскости x-z мне придется 1) создать 8 пустых игровых объектов, по одному для каждого края куба, 2) выяснить, куда игрок хочет двигаться 3) вращать куб вокруг соответствующего края с помощью поворота вокруг. Также обратите внимание, что пустые игровые объекты являются дочерними элементами куба. Unity позволяет нам использовать их глобальную или локальную позицию :) - person Adocad; 11.06.2017