Teste nossa "prova de conceito" de uma porta automática. Quando o avatar chega a 5 "pés virtuais" (5 x 30,5 cm. virtuais) - 5 bolinhas no nosso chão) a porta vai para Leste (direita, se o cara vem do Sul). Quando ele se afasta 6 pés, a porta se fecha. Repare que temos som:
Primeiro vamos falar de som.
O Unity aceita arquivos de som nos formatos: .MP3, .WAV,.AIF e .OGG.
De presente para você, temos uma coleção de uns 30 efeitos sonoros em .MP3:
Para colocar um som numa "scene" você tem que importar o arquivo como asset. Ele vai para a divisória "Project" como um audio clip.
Se você des-ticar "3D Sound" o som terá sempre o mesmo volume, se você deixar ticado, o volume vai diminuindo a medida que o avatar se afasta do GameObject que emite o som.
Para poder tocar (play) o som a partir de um script acoplado num GameObject, esse GO tem que ter uma "Audio Source". Para acoplar uma, use: "Component | Audio |AudioSource" da Barra Superior. Você deve arrastar o audio-clip para a Audio Source:
NOTA: De-setar "Play On Awake", para não tocar quando o GameObject é carregado.
Dentro do script que vai disparar o som, crie uma váriável (pode ter outro nome):
var somClip: AudioClip;
NOTA: Não esqueça de arrastar o audio-clip para a variável (ver figura acima).
No lugar adequado do script, use:
audio.clip = somClip; audio.Play();
Outros comandos importantes são: Stop() e Pause(). E podem ser setadas as propriedades:
audio.volume = 0 até 1; audio.loop = true ou false;
Visto o básico sobre som, vamos falar do evento "proximidade".
Para disparar uma ação, quando o avatar (Player) estiver a uma distância X do objeto A, coloque, nesse objeto A um script com a variável (pode ter outro nome):
var Player:Transform;
NOTA: Não esqueça de arrastar o avatar, da "Hierarchy" para o "Inspector" (veja figura):
Depois, dentro do "Update" use um "IF" assim:
if(Vector3.Distance(Player.position,transform.position) < distancia ) {
Veja todo o script colocado na porta de nosso exercício:
var Player: Transform;
var aberto = 0;
var somClip: AudioClip;
function Update(){
if(Player!=null){
if(Vector3.Distance(Player.position,transform.position)< 10 && aberto == 0){
transform.Translate(Vector3.right*-5);
audio.clip = somClip;
audio.Play();
aberto=1;
}
if(Vector3.Distance(Player.position,transform.position)> 12 && aberto == 1){
transform.Translate(Vector3.right* 5);
audio.clip = somClip;
audio.Play();
aberto=0;
}
}
}
Testamos se o Player existe, apenas como garantia. No caso, até não precisava.
ANTERIOR PRÓXIMA ÍNDICE HOME PAGE