oque eu tenho que colocar nesse script?
4 participantes
Página 1 de 1
oque eu tenho que colocar nesse script?
eu estou tentando fazer um script(para ativar uma animaçao)
eu fiz essa parte do script como base no que eu estou aprendendo com vcs!
eu fiz essa parte do script como base no que eu estou aprendendo com vcs!
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(AudioSource))]
public class playanimaçao : MonoBehaviour {
AudioSource som;
private float distancia;//distancia para ativar a animaçao
public Animation animaçao;//aki vc coloca a animaçao
public GameObject jogador;//aki vc coloca o player
public float ativador;//aki vc configura a distançia para ativar a animaçao
//use isso quando iniciar
void Start () {
jogador = GameObject.FindWithTag("Player");// Aqui associa o player ao jogador
som = GetComponent<AudioSource>();
}
// a atualizaçao e chamada uma vez por quadro
void Update () {
distancia = Vector3.Distance(transform.position, jogador.transform.position);
if (distancia <= ativador) ;
animaçao.
}
}
Re: oque eu tenho que colocar nesse script?
glauco escreveu:eu estou tentando fazer um script(para ativar uma animaçao)
eu fiz essa parte do script como base no que eu estou aprendendo com vcs!eu nao tenho muita noçao em programaçao AINDA,mais eu estou praticando e fiz esse,COMO PODE VER EU QUERO ATIVAR A ANIMAÇAO QUANDO O PLAYER CHEGAR PERTO , MAIS EU NAO CONSEGUI COMPLETAR ESSE SCRIPT ,eu nao sei como fazer pra da play na animaçao HELP
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(AudioSource))]
public class playanimaçao : MonoBehaviour {
AudioSource som;
private float distancia;//distancia para ativar a animaçao
public Animation animaçao;//aki vc coloca a animaçao
public GameObject jogador;//aki vc coloca o player
public float ativador;//aki vc configura a distançia para ativar a animaçao
//use isso quando iniciar
void Start () {
jogador = GameObject.FindWithTag("Player");// Aqui associa o player ao jogador
som = GetComponent<AudioSource>();
}
// a atualizaçao e chamada uma vez por quadro
void Update () {
distancia = Vector3.Distance(transform.position, jogador.transform.position);
if (distancia <= ativador) ;
animaçao.
}
}
Mn acho que esse video resolve seus problemas depois de assistir o video se ainda restar duvidas, pode falar!
Duarte- Programador
- PONTOS : 3353
REPUTAÇÃO : 97
Idade : 24
Áreas de atuação : Programação
Desenvolvedor Android
Respeito as regras :
Re: oque eu tenho que colocar nesse script?
Boa noite brow! Dá uma olhada nas mudanças que eu fiz:
Abraço!
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(AudioSource))]
public class playanimaçao : MonoBehaviour {
AudioSource som;
private float distancia;//distancia para ativar a animaçao
private GameObject jogador;//aki vc coloca o player
public float ativador;//aki vc configura a distançia para ativar a animaçao
//use isso quando iniciar
void Start () {
jogador = GameObject.FindGameObjectWithTag ("Player");// Aqui associa o player ao jogador
som = GetComponent<AudioSource>();
}
// a atualizaçao e chamada uma vez por quadro
void Update () {
distancia = Vector3.Distance(transform.position, jogador.transform.position);
if (distancia <= ativador) {
GetComponent<Animation> ().Play ("nomeanimação");
}
}
}
Abraço!
Re: oque eu tenho que colocar nesse script?
oi brow ,eu nao entendi direito ,eu coloquei o script no objeto que eu queria que acontecesse a animaçaodstaroski escreveu:Boa noite brow! Dá uma olhada nas mudanças que eu fiz:Corrigi alguns parâmetros, dá uma olhadinha e compara. Lembrando que como o player era linkado via tag, sua variável não precisava ser pública(aparecer no inspector), então a privei, é importante sempre privar as variáveis que possam ser privadas. Para funcionar a animação nessa caso, precisa do componente Animation anexado no objeto que contiver o script, bem como o clipe de animação dentro dele. Por isso, é recomendado usar o Animator, conforme o vídeo que o mano postou acima, a forma que estou te mostrando é simples, pelo Animator é melhor, por isso é bom se ver lá o vídeo.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(AudioSource))]
public class playanimaçao : MonoBehaviour {
AudioSource som;
private float distancia;//distancia para ativar a animaçao
private GameObject jogador;//aki vc coloca o player
public float ativador;//aki vc configura a distançia para ativar a animaçao
//use isso quando iniciar
void Start () {
jogador = GameObject.FindGameObjectWithTag ("Player");// Aqui associa o player ao jogador
som = GetComponent<AudioSource>();
}
// a atualizaçao e chamada uma vez por quadro
void Update () {
distancia = Vector3.Distance(transform.position, jogador.transform.position);
if (distancia <= ativador) {
GetComponent<Animation> ().Play ("nomeanimação");
}
}
}
Abraço!
veja essa foto http://ap.imagensbrasil.org/image/8jhxuu
fiz como vc disse "que tinha que colocar o animation para funcionar"
eu fiz um teste mas nao funcionou,eu tentei colocar o nome da animaçao nessa parte GetComponent<Animation> ().Play ("nomeanimação");mas tbm nao deu certo
Re: oque eu tenho que colocar nesse script?
Como o mano aí em cima falou, acho que a melhor opção era você usar Animator mesmo. É bem simples, não precisa se assustar.
Supondo que você tenha uma animação configurada como abaixo, na janela Animation.
http://ap.imagensbrasil.org/image/8jZEvm
Clique no objeto que tem essa animação e abra a janela Animator (Window > Animator).
No Animator você terá algo parecido com isso:
http://ap.imagensbrasil.org/image/8jZHDA
A animação irá acontecer de qualquer maneira, pois ela é a animação de entrada, e se eu entendi bem você quer que tal animação aconteça só quando a distância for menor ou igual ao ativador. Existem diferentes maneiras de contornar isso, e uma que eu costumo fazer é criar uma animação em branco para ser a Entry; Eu crio um novo Animation Clip sem nada.
Clique com o botão direito em Entry e depois vá em Set StateMachine Default State. Controle a seta para que ela aponte para a animação em branco.
http://ap.imagensbrasil.org/image/8jZN8y
Agora clique com o botão direito na animação em branco e escolha a opção Make Transition, e aponte a seta para a animação que você quer que aconteça; é aqui que acredito que possamos solucionar seu problema.
Como na imagem a seguir, clique em Parameters e depois no pequeno sinal de mais.
http://ap.imagensbrasil.org/image/8jZu8m
Crie a variável que quiser, eu costumo criar um Int com o nome NextAnim. Este será o parâmetro para dar play na sua animação lá no Script.
Clique na seta de transição que você criou da animação vazia para a animação do seu objeto. O Inspector vai ter algumas opções para se trabalhar, como colocar uma condição para essa animação acontecer.
http://ap.imagensbrasil.org/image/8jZ9PA
Coloque esta condição. Se a variável NextAnim for igual a 1, a animação irá acontecer. Feito isso, é só ir no seu Script e colocar o seguinte:
Espero que possa ter ajudado de algum jeito, se é que eu entendi direito a sua pergunta. Hahaha
Falou
Supondo que você tenha uma animação configurada como abaixo, na janela Animation.
http://ap.imagensbrasil.org/image/8jZEvm
Clique no objeto que tem essa animação e abra a janela Animator (Window > Animator).
No Animator você terá algo parecido com isso:
http://ap.imagensbrasil.org/image/8jZHDA
A animação irá acontecer de qualquer maneira, pois ela é a animação de entrada, e se eu entendi bem você quer que tal animação aconteça só quando a distância for menor ou igual ao ativador. Existem diferentes maneiras de contornar isso, e uma que eu costumo fazer é criar uma animação em branco para ser a Entry; Eu crio um novo Animation Clip sem nada.
Clique com o botão direito em Entry e depois vá em Set StateMachine Default State. Controle a seta para que ela aponte para a animação em branco.
http://ap.imagensbrasil.org/image/8jZN8y
Agora clique com o botão direito na animação em branco e escolha a opção Make Transition, e aponte a seta para a animação que você quer que aconteça; é aqui que acredito que possamos solucionar seu problema.
Como na imagem a seguir, clique em Parameters e depois no pequeno sinal de mais.
http://ap.imagensbrasil.org/image/8jZu8m
Crie a variável que quiser, eu costumo criar um Int com o nome NextAnim. Este será o parâmetro para dar play na sua animação lá no Script.
Clique na seta de transição que você criou da animação vazia para a animação do seu objeto. O Inspector vai ter algumas opções para se trabalhar, como colocar uma condição para essa animação acontecer.
http://ap.imagensbrasil.org/image/8jZ9PA
Coloque esta condição. Se a variável NextAnim for igual a 1, a animação irá acontecer. Feito isso, é só ir no seu Script e colocar o seguinte:
- Código:
if (distancia <= ativador)
{
GetComponent<Animator>().SetInteger("NextAnim", 1);
}
- Código:
else
{
GetComponent<Animator>().SetInteger("NextAnim", 0);
}
Espero que possa ter ajudado de algum jeito, se é que eu entendi direito a sua pergunta. Hahaha
Falou
Tópicos semelhantes
» [Duvida] Alguem sabe oq eu tenho que acrescentar nesse script?
» Realistic fps prefab tenho esses erros ao tentar colocar um script de entrar sair do carro
» Oque tem de errado nesse skript ele nao esta voltando a ficar off
» Como Colocar Um Esqueleto Nesse Corpo Pela Unity ?
» Erros nesse script?
» Realistic fps prefab tenho esses erros ao tentar colocar um script de entrar sair do carro
» Oque tem de errado nesse skript ele nao esta voltando a ficar off
» Como Colocar Um Esqueleto Nesse Corpo Pela Unity ?
» Erros nesse script?
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos