Плеер (с lerp м/у клипами, и сменой музыки по обстановке)

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

Плеер (с lerp м/у клипами, и сменой музыки по обстановке)

Сообщение Faps 30 июл 2011, 23:46

ниже выложил скрипт который представляет из себя плеер, в нем реализованна возможность проигрывать 3 списка клипов, в зависимости от ситуации, с плавными переходами м/у клипами, и возможностью случайной выборки, а также принудительной сменой музыки (nextClip())
для работы необходимо дополнительно повесить на ГО 2 аудио соурса (и прикрепить ссыли), ну и про музыку не забыть



Синтаксис:
Используется csharp
// Made in Faps  (KostyaFPS@Rambler.ru)
using UnityEngine;
using System.Collections;

[System.Serializable]
public class Clips
{
    int i = 0;
    public AudioClip GetClip(bool random)
    {
        i = random ? Random.Range(0, clips.Length) : (i < clips.Length - 1 ? i + 1 : 0);
        return clips[i];
    }
    public AudioClip[] clips;
}

public class Music : MonoBehaviour
{
    public static Music MyMusic;
    bool selFirstAS = true;

    public AudioSource audio1;
    public AudioSource audio2;

    Clips selClips;

    public Clips calmMusics;
    public Clips enemyMusics;
    public Clips batleMusics;

    public float fadingMusic = 2f;
    public bool randomClips = true;

    public enum EStyleMusic {calm, enemy, batle}
   
    [SerializeField]
    EStyleMusic _styleMusic = EStyleMusic.calm;
    public EStyleMusic styleMusic
    {
        get
        {
            return _styleMusic;
        }
        set
        {
            if (_styleMusic == value)
                return;
            _styleMusic = value;
            switch (_styleMusic)
            {
                case EStyleMusic.calm:
                    playCalmMusics();
                    break;
                case EStyleMusic.enemy:
                    playEnemyMusics();
                    break;
                case EStyleMusic.batle:
                    playBatleMusics();
                    break;
            }
        }
    }

    void playMusic()
    {
        selFirstAS = !selFirstAS;
        print("playMusic " + selFirstAS);
        AudioSource _as= ((selFirstAS) ? audio1 : audio2);
        _as.clip = selClips.GetClip(randomClips);
        _as.Play();
    }

    void playCalmMusics()
    {
        selClips = calmMusics;
        playMusic();
    }
    void playEnemyMusics()
    {
        selClips = enemyMusics;
        playMusic();
    }
    void playBatleMusics()
    {
        selClips = batleMusics;
        playMusic();
    }

    public void nextClip()
    {
        playMusic();
    }

    void FixedUpdate()
    {
        AudioSource selAS = (selFirstAS) ? audio1 : audio2;
        try
        {
            if (selAS.clip.length - selAS.time <= fadingMusic)
            {
                playMusic();
                selAS = (selFirstAS) ? audio1 : audio2;
            }
        }
        catch
        {
            playMusic();
            selAS = (selFirstAS) ? audio1 : audio2;
        }
        AudioSource unselAS = (selFirstAS) ? audio2 : audio1;

        selAS.volume = Mathf.Clamp01(selAS.time / fadingMusic);
        unselAS.volume = 1f - selAS.volume;
    }

    void Awake()
    {
        MyMusic = this;
    }

    void Start()
    {
        selClips = calmMusics;
    }
}

 


calmMusics - список музыки в спокойных сценах
enemyMusics - список музыки проигрываемой при какой-либо опасности
batleMusics - музыка при ведении боя

fadingMusic - время спада клипа
randomClips - случайный выбор из списка

styleMusic - стиль музыки (спокойная, опасность, битва), задает проигрываемый список (смена мелодии происходит при изменении поля[не из редактора ;)])

nextClip() - вызов следующего клипа
Faps
UNIт
 
Сообщения: 73
Зарегистрирован: 29 май 2010, 13:21

Re: Плеер (с lerp м/у клипами, и сменой музыки по обстановке)

Сообщение gnoblin 31 июл 2011, 00:50

вебплеерную демку пажалуста!
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Плеер (с lerp м/у клипами, и сменой музыки по обстановке)

Сообщение Faps 31 июл 2011, 17:27

HTML код для вашего блога :
Код: Выделить всё
<script language='javascript' type="text/javascript"> document.write("<iframe marginheight='0' src='http://unity3d.ru/distribution/player.php?url=http://dl.dropbox.com/u/36838152/WebPlayer.unity3d&w=640&h=480&t=true&preview=1' height='"+(480+30)+"' width='640' frameborder='0' scrolling='no'></iframe>"); </script>
Faps
UNIт
 
Сообщения: 73
Зарегистрирован: 29 май 2010, 13:21

Re: Плеер (с lerp м/у клипами, и сменой музыки по обстановке)

Сообщение Faps 31 июл 2011, 17:32

- размер демки 23 338 Кб

музыка реализована на вышепредставленном скрипте, семплы из гари потера
Faps
UNIт
 
Сообщения: 73
Зарегистрирован: 29 май 2010, 13:21

Re: Плеер (с lerp м/у клипами, и сменой музыки по обстановке)

Сообщение GFreeman 14 авг 2011, 21:12

А исходники демки можно выложить?
GFreeman
UNец
 
Сообщения: 4
Зарегистрирован: 03 июл 2011, 11:08


Вернуться в Исходники (Копилка)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3