суббота, 25 февраля 2012 г.

Пишем игру под Android: Часть 6: Добавление звука

Это маленькая заметка про то как добавить звук в игру так как в интернете этой информации мало, а разбираться в туче чужого кода я думаю людям будет лень я сделаю это за них. Собственно начнем. Для начала если у Вас еще нет игры то создадим её :) Ссылки на уроки по созданию ищем ниже:

  1. Пишем игру под Android: Часть 1 — Рисуем картинки на SurfaceView
  2. Пишем игру под Android: Часть 2 — Создаем первый спрайт
  3. Пишем игру под Android: Часть 3 — Спрайтовая анимация, работа с несколькими спрайтами
  4. Пишем игру под Android: Часть 4 — onTouchEvent и определение столкновений
  5. Пишем игру под Android: Часть 5 — Создание полноценной 2D игры
  6. Пишем игру под Android: Часть 6: Добавление звука
  7. Пишем игру под Android: Часть 7: Меню для игры и окно приветствия
  8. Пишем игру под Android: Часть 8: Фоновая музыка в игре


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

Шапка класса GameView.java
private SoundPool sounds;
private int sExplosion;


Это мы объявили переменные для проигрыша музыки. Теперь скачиваем вот этот звуковой файл и создаем папку в папке res папку raw, и закидываем туда наш звуковой файл. Вот какая структура должна получиться: Дальше нам нужно в конструкторе класса объявить какой файл проигрывать и в каком количестве, и так пишем в конструкторе вот такое:

Конструктор класса GameView.java
sounds = new SoundPool(10, AudioManager.STREAM_MUSIC,0);
sExplosion = sounds.load(context, R.raw.explosion, 1);


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

Метод столкновения объектов в классе GameView.java
/*Проверка на столкновения*/
    private void testCollision() {
//...
          //вот эта строчка добавляется для проигрыша звука
          sounds.play(sExplosion, 1.0f, 1.0f, 0, 0, 1.5f);
//...
}


Теперь после того как Вы откомпилируете проект и запустите игру, при выстреле у Вас будет воспроизводиться одинарный звук взрыва. Если есть вопросы задаем не стесняемся, спасибо за внимание. Всегда Ваш dajver.

7 комментариев:

  1. а как фоновую музыку играть то

    ОтветитьУдалить
  2. Я чуть позже сюда же и добавлю, сейчас времени нет.

    ОтветитьУдалить
  3. так) я вернулся в ряды программерства)) Шикарно,то что мне нужно!

    ОтветитьУдалить
  4. а вставлять сюда
    /**Конструктор
    public GameThread(GameView view)
    {
    this.view = view;
    }

    ОтветитьУдалить
  5. Можна подробнее описать функцию sounds.play() и ее параметры ?

    ОтветитьУдалить
    Ответы
    1. play(что играем, правое ухо, левое ухо, 0, зацикливаем?, скорость воспроизведения)

      Удалить