Вторник, 22 Октября 2019, 21:33

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Общие обсуждения программистов » Кто поможет реализовать небольшую задачу? (2d игра на Phaser 2, в целях обучения)
Кто поможет реализовать небольшую задачу?
2x2Дата: Суббота, 23 Марта 2019, 12:44 | Сообщение # 1
уже был
Сейчас нет на сайте
Привет =) Делаю простейшую игру в целях обучения. Игра Ping-Pong на JavaScript и движке Phaser 2.
Хочу сделать, чтобы можно было менять скорость передвижения шарика прямо во время игры.
Тобишь нажатием на кнопку паузы игра останавливается и вылетает меню с выбором скорости(всего 6 режимов скорости).
После выбора скорости и закрытия этой меню скорость шарика сразу изменяется.
вот сама игра http://f0283831.xsph.ru
Если нужно могу архив с исходниками прикрепить.

Не могу сообразить как это реализовать.
Может кто то хотяб намекнёт)))
Буду очень благодарен за любую помощь мне в обучении))
VostruginДата: Воскресенье, 24 Марта 2019, 10:48 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Привет, 2x2.

Глянул код, у вас сложновато всё с его организацией. Если я правильно понял, то скорость вашего мяча задаётся вектором в ball.body.velocity. Соответственно вам нужно завести отдельную переменную, которая будет отвечать за модификацию скорости. Пусть это будет ballBodyVelocityModifier, по умолчанию 1.

Теперь добавьте отдельную функцию, она будет считать вам скорость с учётом коэффициента
Код
function getCalculatedBallSpeed(value) {
  return value * ballBodyVelocityModifier;
}


После этого, в каждом месте, где вы изменяете/задаёте скорость мяча, вы должны дополнительно вызывать эту функцию. Давайте посмотрим на примере вашей функции ballHits.

Код
function ballHits(_ball, _mainPlatform){
    var dif = 0;
    
    if (_ball.x < _mainPlatform.x)
    {
  diff = _mainPlatform.x - _ball.x;
  _ball.body.velocity.x = getCalculatedBallSpeed(-10 * diff);
    }
    else if(_ball.x > _mainPlatform.x)
  {
   diff = _ball.x - _mainPlatform.x;
   _ball.body.velocity.x = getCalculatedBallSpeed(10 * diff);
  }
    
    else
    {
  _ball.body.velocity.x = getCalculatedBallSpeed(2 + Math.random() * 8);
    }
}


Меню с выбором скорости будет изменять переменную ballBodyVelocityModifier, которая в свою очередь будет изменять скорость мяча.

Мне кажется, что вы переусложнили логику столкновения мяча. Вы ведь могли просто умножить velocity.x на -1.




2x2Дата: Воскресенье, 24 Марта 2019, 23:16 | Сообщение # 3
уже был
Сейчас нет на сайте
Привет, Vostrugin!
Спасибо большое за ответ. Буду разбираться, вы написали ответ как раз на то, что я не понимал)) Теперь думаю смогу решить. Отпишусь как реализую

Добавлено (27 Марта 2019, 02:21)
---------------------------------------------
Vostrugin, ещё раз спасибо что объяснили) Реализовать получилось, но пока только одна скорость есть) Потом доделаю и можно будет выбирать 6 скоростей

Форум игроделов » Программирование » Общие обсуждения программистов » Кто поможет реализовать небольшую задачу? (2d игра на Phaser 2, в целях обучения)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2019 Рейтинг