2016-08-31 2 views
-1

Я делаю платформерную игру с холстом HTML5. У меня нет главного героя, поэтому я сейчас использую мяч. Я пытаюсь сделать так, чтобы мяч не прошел через травяной блок. Я использую список для хранения значений моей карты, а затем 2 оператора if, чтобы преобразовать значения списка в карту, поэтому я не знаю, как обнаружить столкновение между мячом и шаром травы, учитывая, что травяные блоки может быть где угодно на карте.Конфликты объектов HTML5 Холст

Мой вопрос: как я могу совершить столкновение между мячом и блоком травы без жесткого кодирования, он должен быть быстрым, и если мне нужна библиотека, пожалуйста, покажите пример того, как ее использовать в моем ситуация.

Мой код здесь: https://drive.google.com/open?id=0B7OJnVpBNrkDTlA0amdzMkdrRnM

+0

Вам нужно будет проверить, попали ли они во время игры – Hydro

+0

Я бы предложил использовать движок игры: https://html5gameengine.com/ –

+0

Либо вам нужно создать собственную систему столкновений (A бит математики, но не слишком тяжелый) или использовать существующий игровой движок. Есть некоторые хорошие плавающие, взгляните на «Phaser», который будет обрабатывать намного больше, чем просто столкновение, потому что вы хотите воспользоваться тем, что он может предложить. – DBS

ответ

0

Вот основное решение вашей проблемы, с которой вы можете опираться на:

https://plnkr.co/edit/5c08NrVQh44hsq1BFX9X?p=preview

В итоге:

  • I создал новый многомерный массив, называемый , чтобы предоставить ссылку для мяч может и не может путешествовать.
  • Я использовал значения ballLocationCol и ballLocationRow, которые вы уже имели на месте (но прокомментировали), чтобы выяснить, какие плитки в данный момент мяча.
  • Затем мы проверяем через новую функцию canMoveHere, может ли мяч проходить через текущую плитку и обратное направление, если нет.

N.B. Если вы только начинаете этот проект для обучения, обязательно напишите код для обнаружения столкновения. Однако, если нет, вы, скорее всего, найдете более продуктивным, как уже отмечали некоторые комментаторы, использовать движок игры.

+0

Я не знаю, что это со мной, но я предпочитаю не использовать библиотеки, когда мне это не нужно. Но я думаю, что это должно сработать. Я использовал двойной массив для создания своих карт, но я начал использовать один массив из-за класса, который я принимал, поэтому спасибо за это! – Jordan