JavaScript. Физика взрыва.
Здравствуйте.
Подскажите пожалуйста, может, кто-то сталкивался с подобными задачами или знает, как ПРАВИЛЬНЕЕ реализовать. Реализовать нужно на JavaScript. Есть земля, в нее попадает снаряд, который разрушает(делает в ней впадину/углубление), все зависит от попавшего в нее снаряда + кроме впадины нужно реализовать осыпание земли. Я думаю это реализовать следующим способом: Имеем 2 слоя, один под другим. Верхний слой - картинка земли или гор, второй слой - канвас, который и будет разрушаться. Далее я высчитываю координаты конечной точки снаряда. Сам снаряд имеет радиус поражения, после того, как снаряд достиг конечной точки, я стираю первый слой - тот который канвас - имитирую взрыв(не знаю, как правильнее имитировать, гиф-картинку точно не хочу использовать, скорее всего буду спрайтами делать анимацию) и во время этого взрыва подменяю верхнюю картинку на новую с готовой впадиной. Но мне этот вариант, мягко говоря, кажется не серьезным. С разработкой игр сталкиваюсь впервые. Подскажите пожалуйста, как правильнее подобное реализовать или может есть какие-то примеры с кодом? Так же очень важен процесс осыпания земли после взрыва. Да, и писать всю физику буду сам, без box2d и других подобных движков. Очень буду признателен. Спасибо. |
хм. вы уверены в том, что реализация взрыва на спрайтах будет лучше, чем его реализация на canvas ?
|
Цитата:
А как реализовать взрыв в канвасе? Полностью отрисовывать всю анимацию ? |
Таймер уже писали, вот и бомба теперь будет... :D
Цитата:
|
[quote=trikadin;143239]Таймер уже писали, вот и бомба теперь будет... :D
бомбу я знаю, как сделать, меня интересует имитация самого взрыва |
вы могли бы обратиться к solovei95. он вроде людит и активно изучает канвасы и всё, что с ним связано. не обращайте внимания на его репутацию :)
Цитата:
или для каждого типа поверхности делать свой спрайт? а потом не понравится цвет земли.. поменял. "ну что же, пора бы и спрайт поменять". как-то не очень :) можно для ie оставить. |
Цитата:
Если вам нужна полная имитация взрыва, то это вам гуглить в сторону физики и читать вот такие умные статьи) А если нет - то просто рисуете картинку, потом картинку со взрывом, и т.д. В нужный момент просто подставляете нужное. |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
Цитата:
1) Гуглим по фразам "Падение снаряда", "Взрыв снаряда", "Радиус разлёта осколков". 2) Матан. 3) ??? 4) PROFIT! |
Ок, формулы нашел.
Спасибо огромное! Подскажите, как быть с канвасом? Есть такой мтод, который будет стерать слой, на котором взорвалась бомба/снаряд? Или что можете предложить? |
Цитата:
|
Цитата:
|
Цитата:
Или ссылку на пример? Как мне быть, если поверх канваса будет картинка земли, которую нарисовал дизайнер? Или нужно полностью все отрисовывать в канвасе? |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
setTimeout(repaint_canvas, 1000/20 - script_execution_time); навскидку - это будет (1000/20-10) = (50-10) = 40. trikadin, а все ставят 10 мсек :) |
Цитата:
То есть мне в цикле нужно перерисовывать несколько раз, с каждым разом делая дыру все больше? |
Цитата:
Цитата:
|
Цитата:
Только вот не пойму: ведь дизайн земли будет нарисован дизайнером в фотошопе или еще где и я его запихну в канвас, как мне тогда сделать? Несколько видов дизайна земли нужно и после каждого взрыва подставлять в канвас новую картинку во время перерисовки? Но ведь нужно сделать правдноподобно и чтоб каждая дыра в земле отличалась от предыдущей, не будет же дизайнер рисовать 100 разных дизайнов для всех вариантов взрывов. Подскажите пожалуйста, как поступить в таком случае? |
Запихнуть картинку в канвас. Ф-цию не подскажу, но так точно можно.
|
Цитата:
|
Я имею в виду, что вы запихнёте её в канвас и будете перерисовывать те части, которые нужны.
Вы всегда такой паникёр? |
Цитата:
|
Не так понимаете) Вы меняете только часть холста. Ту, в которой делается углубление. Какие проблемы?)
|
Цитата:
При всем этом имея только дизайн земли самой первой, без впадин и дыр. |
Isaac, я перестал вас понимать. Просто подумайте о том, что будет происходить с картинкой в момент взрыва.
|
Цитата:
Вопрос: могу ли я каким-то образом "достучаться" до пикселей картинки и удалять те, которые мне необходимы? |
Цитата:
|
Цитата:
а свойство покажете, которое это реализует? |
Не-а. Гугл в помощь. С канвасом я так и не дошёл поработать.
|
Цитата:
А ві вообще, как считаете, лучше подменять картинку каждій раз при взріве или удалять пиксели на ней? |
Цитата:
|
|
Isaac, есть у нас один местный умелец-физик... Таки он может помочь тебе с формулами по взрыву.
И берёт немного - 100р. Готов ему заплатить? |
Цитата:
|
Часовой пояс GMT +3, время: 23:10. |