Phaser P2: игрок бьет по мячу и добавляет импульс при ударе

Мне нужна помощь в школьном проекте, и я хочу написать код для такой игры, как Headsoccer, в Phaser с P2 Physics. У меня уже есть два игрока, две цели и мяч, который может столкнуться друг с другом. Теперь я хочу добавить анимацию удара и хитбокс для удара, который при ударе по мячу применяет импульс или какую-то силу от удара. Как я мог это сделать?

Спасибо.

Вот код Было бы неплохо, если бы вы могли дать мне несколько советов, как лучше структурировать мой код или могу ли я что-то изменить.

function create() {
    game.world.setBounds(0, 0, 800, 500);
    game.physics.startSystem(Phaser.Physics.P2JS);
    //game.physics.p2.enable([ player, player2, fussball, goal, latte ], true);
    //game.physics.arcade.gravity.y = 200;
    game.add.tileSprite(0, 0, 800, 600, 'Spielfeld');
    game.physics.p2.gravity.y = 600;


    goal = game.add.sprite(35, 428, 'goal');
    game.physics.p2.enable(goal,true);
    goal.body.static = true;
    goal.physicsBodyType = Phaser.Physics.P2JS;
    goal.body.data.shapes[0].sensor = true;

    player = game.add.sprite(100, 500, 'player');
    game.physics.p2.enable(player,true);
    player.anchor.setTo(0.5, 0.5);
    player.body.collideWorldBounds = true;
    player.body.fixedRotation = true;
    player.body.clearShapes();
    player.body.loadPolygon('playerPhysics','player');


    player2 = game.add.sprite(500, 500, 'player');
    game.physics.p2.enable(player2);
    player2.anchor.setTo(0.5, 0.5);
    player2.body.collideWorldBounds = true;
    player2.body.fixedRotation = true;

    var shape = new p2.Circle();
    ball = game.add.sprite( game.world.centerX, game.world.centerY, 'ball');
    game.physics.p2.enable(ball);
    ball.anchor.setTo(0.5, 0.5);
    ball.body.collideWorldBounds = true;
    ball.body.data.gravityScale = 1;
    ball.body.clearShapes();
    ball.body.addCircle(shape);

Моя игра выглядит так, и я показал хитбоксы Игрока 1 и Гол.

Phaser P2: игрок бьет по мячу и добавляет импульс при ударе

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
227
1

Ответы 1

Поскольку у нас нет кода для работы, я предполагаю, что у вас есть что-то вроде кода официальный пример Impact Events.

В этом случае вы можете воспроизвести анимацию, когда один из игроков сталкивается с мячом. В приведенном выше примере это будет изменение этого метода для воспроизведения анимации (вместо изменения alpha спрайта):

function hitPanda(body1, body2) {
    body2.sprite.alpha -= 0.1; // Remove/replace this line.
    // Add the playing of the kick animation.
    body1.play('kick');
}

В этой же области вы можете применить к мячу прибавку скорости.

Разве тогда не будет повышаться скорость мяча каждый раз, когда я нажимаю удар ногой? И как применить ускорение в P2 Physics? Спасибо

Rrezon 28.10.2018 13:14

«каждый раз, когда я нажимаю удар»: думаю, я пропустил это в вашем вопросе - вы хотели, чтобы удар происходил, когда пользователь что-то делает, а не только при столкновении двух объектов? Можете ли вы обновить свой вопрос каким-нибудь кодом, чтобы мы могли видеть, что вы пытаетесь сделать, и иметь с чего начать? См. stackoverflow.com/help/mcve

James Skemp 28.10.2018 15:11

Другие вопросы по теме