PROXIMIDADE E SOM: PORTA AUTOMÁTICA

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:

sounds.zip

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