[RESOLVIDO] Botão não está desativando pelo GetComponent
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Botão não está desativando pelo GetComponent
- Código:
public Transform OndeSaiMagia;
public Transform OndeSaiMagia;
public int VelocidadeDaMagia;
public int VelocidadeDaMagia;
private Animator Animacao;
private Animator Animacao;
Bool HabilidadeDisponível=true;
[size=13]
[/size]
[size=13] void Start(){[/size]
Animacao = GetComponent<Animator>();
}
void UpDate(){
}
public void atacar(){
If(HabilidadeDisponível){
Rigidbody Rb=Rigidbody.Instantiate(Magia, OndeSaiMagia.position,OndeSaiMagia.rotation)
as Rigidbody;
Rb.AddForce(OndeSaiMagia.forward * VelocidadeDaMagia);
Animacao.SetInteger("Atacar",2);
GetComponent<Button>().interactable = false;
HabilidadeDisponível = false;
StartCorroutine("DelayHabilidade");
}}
[size=13]
[/size]
[size=13]
[/size]
IEnumerator DelayHabilidade (){
yield return new waitforseconds(1f);
HabilidadeDisponível = true;
GetComponent<Button>().interactable = true;
}
A minha intenção é desativar o componente interactable e ativar depois do IEnumerator acabar, para o botão não ser clicável após clicar nele e lançar a magia.
kessisdiones- Membro
- PONTOS : 1153
REPUTAÇÃO : 6
Respeito as regras :
Re: [RESOLVIDO] Botão não está desativando pelo GetComponent
- Código:
//duplicado;
public Transform OndeSaiMagia;
public Transform OndeSaiMagia;
//duplicado;
public int VelocidadeDaMagia;
public int VelocidadeDaMagia;
//duplicado;
private Animator Animacao;
private Animator Animacao;
bool HabilidadeDisponível = true;
void Start()
{
Animacao = GetComponent<Animator>();
}
private void Update()
{
}
public void atacar()
{
//IF maiusculo;
If(HabilidadeDisponível){
//Magia não existe
Rigidbody Rb = Rigidbody.Instantiate(Magia, OndeSaiMagia.position, OndeSaiMagia.rotation)
as Rigidbody;
Rb.AddForce(OndeSaiMagia.forward * VelocidadeDaMagia);
Animacao.SetInteger("Atacar", 2);
//precisa adicionar (using UnityEngine.UI;)
GetComponent<Button>().interactable = false;
HabilidadeDisponível = false;
//StartCoroutine com dois "RR".
StartCorroutine("DelayHabilidade");
}
}
IEnumerator DelayHabilidade()
{
//WaitForSeconds minusculo;
yield return new waitforseconds(1f);
HabilidadeDisponível = true;
//precisa adicionar (using UnityEngine.UI;)
GetComponent<Button>().interactable = true;
}
SteveRogers- Instrutor
- PONTOS : 2598
REPUTAÇÃO : 156
Respeito as regras :
Re: [RESOLVIDO] Botão não está desativando pelo GetComponent
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class LancarMagias : MonoBehaviour
{
public Rigidbody Magia;
public Transform OndeSaiMagia;
public int VelocidadeDaMagia;
private Animator Animacao;
bool HabilidadeDisponivel=true;
public float TempoDelayHabilidade = 3f;
void Start(){
Animacao = GetComponent<Animator>();
}
void UpDate(){
}
public void atacar(){
if(HabilidadeDisponivel){
Animacao.SetTrigger("Atacando");
Rigidbody Rb = Rigidbody.Instantiate (Magia, OndeSaiMagia.position, OndeSaiMagia.rotation)
as Rigidbody;
Rb.AddForce(OndeSaiMagia.forward * VelocidadeDaMagia);
GetComponent<Button>().interactable=false;
HabilidadeDisponivel=false;
StartCoroutine("DelayHabilidade");
}
}
IEnumerator DelayHabilidade(){
yield return new WaitForSeconds(TempoDelayHabilidade);
HabilidadeDisponivel=true;
GetComponent<Button>().interactable=true;
}
}
Ainda não está funcionando, quando coloco o código
- Código:
GetComponent<Button>().interactable=true;
no void Start ele funciona.
kessisdiones- Membro
- PONTOS : 1153
REPUTAÇÃO : 6
Respeito as regras :
Re: [RESOLVIDO] Botão não está desativando pelo GetComponent
Consegui fazer funcionar assim
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class LancarMagias : MonoBehaviour
{
public Rigidbody Magia;
public Transform OndeSaiMagia;
public int VelocidadeDaMagia;
private Animator Animacao;
bool HabilidadeDisponivel=true;
public float TempoDelayHabilidade = 3f;
public Button botao;
void Start(){
botao= GetComponent<Button>();
Animacao = GetComponent<Animator>();
}
void UpDate(){
}
public void atacar(){
if(HabilidadeDisponivel){
Animacao.SetTrigger("Atacando");
Rigidbody Rb = Rigidbody.Instantiate (Magia, OndeSaiMagia.position, OndeSaiMagia.rotation)
as Rigidbody;
Rb.AddForce(OndeSaiMagia.forward * VelocidadeDaMagia);
botao.interactable=false;
HabilidadeDisponivel=false;
StartCoroutine("DelayHabilidade");
}
}
IEnumerator DelayHabilidade(){
yield return new WaitForSeconds(TempoDelayHabilidade);
HabilidadeDisponivel=true;
botao.interactable=true;
}
}
kessisdiones- Membro
- PONTOS : 1153
REPUTAÇÃO : 6
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Problema no GetComponent
» [RESOLVIDO] Entrar no If pelo nome da Scene
» [RESOLVIDO] Pegar filho pelo nome
» [RESOLVIDO] Teletransporte pelo cenario Unity2D
» [RESOLVIDO] Menu Objetos Coletados Pelo Player
» [RESOLVIDO] Entrar no If pelo nome da Scene
» [RESOLVIDO] Pegar filho pelo nome
» [RESOLVIDO] Teletransporte pelo cenario Unity2D
» [RESOLVIDO] Menu Objetos Coletados Pelo Player
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos