Enviada pelo
Site

Ativar e desativar o cinemachine

Estou desenvolvendo um jogo e, consegui desabilitar o objeto detentor do componente cinemachineVirtualCamera clicando em um botão de jogo de celular nomeado f, de foco e, não estou conseguindo habilitar novamente com o botão nomeado de w, w de warrior, usando event trigger e o script

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class warrior_function : MonoBehaviour
{
    public GameObject cinemachine;
    private int apertado_botao;
    private bool definir;
    // Start is called before the first frame update
    void Start()
    {
        definir = false;
        cinemachine = GetComponent<GameObject>();
    }

    // Update is called once per frame
    void Update()
    {
       if(apertado_botao == 2)
       {
            definir = true;
       }
       if(definir == true)
       {
            cinemachine.SetActive(true);
            definir = false;
       }
    }

    public void apertar_botao(int pressionado)
    {
        apertado_botao = pressionado;
    }
}
Professor Alan M.
Identidade verificada
  • CPF verificado
  • E-mail verificado
Respondeu há 8 meses
Contatar Alan

nessa sessao respondemos a dúvidas pontuais.

Um professor já respondeu

Envie você também uma dúvida grátis
Ver resposta
Envie uma dúvida grátis
Resposta na hora da Minerva IA e de professores particulares
Enviar dúvida
Professor Moises E.
Respondeu há 1 mês
Contatar Moises

O seu script tá com alguns problemas:

1. Uso incorreto do "GetComponent<GameObject>(). O método GetComponent não é necessário para referenciar um objeto do tipo GameObject. Você deveria arrastar o objeto cinemachine diretamente no editor do Unity.

2. Lógica de Controle para habilitar/desabilitar o objeto. O script não parece lidar corretamente com o botão de foco (F) para desativar a câmera e o botão de guerreiro (W) para reativá-la.

3. Uso desnecessário da variável "definir". A lógica de ativação pode ser simplificada sem ela.

4. Falta de conxeão do botão ao método. Certifique-se de que os botões estão configurados no Unity para chamar o método apertar_botao.

Segue abaixo a solução corrigida e simplificada:

using UnityEngine;

public class WarriorFunction : MonoBehaviour
{
    public GameObject cinemachine; // Arraste o objeto no Editor do Unity
    private int apertadoBotao;

    void Update()
    {
        if (apertadoBotao == 1) // Botão "f" (desativar)
        {
            cinemachine.SetActive(false);
        }
        else if (apertadoBotao == 2) // Botão "w" (ativar)
        {
            cinemachine.SetActive(true);
        }
    }

    public void ApertarBotao(int pressionado)
    {
        apertadoBotao = pressionado;
    }
}

 

Após escrever o script, configure o unity para funcionar.

1. Atribuir o objeto cinemachine: arraste o objeto com o componente CinemachineVirtualCamera para o campo cinemachine no Inspector.

2. Configure os botões:

2.1. Adicione um componente Event Trigger nos botões.

2.2. Crie um evento do tipo PointerClick no botão F e no botão W.

2.3. Arraste o GameObject que contém o script para o campo do evento.

2.4. No menu suspenso, selecione o método WarriorFunciton.ApertarBotao(int).

2.5. Para o botão F, insira o valor 1. E para o botão W, insira o valor 2.

 

Caso os botões F e W, você esteja se referindo as respectivas teclas do teclado, é só usar a classe Input no método Update. Ficaria assim:

using UnityEngine;

public class WarriorFunction : MonoBehaviour
{
    public GameObject cinemachine; // Arraste o objeto no Editor do Unity

    void Update()
    {
        // Detecta se a tecla "F" foi pressionada
        if (Input.GetKeyDown(KeyCode.F))
        {
            cinemachine.SetActive(false); // Desativa o objeto
        }

        // Detecta se a tecla "W" foi pressionada
        if (Input.GetKeyDown(KeyCode.W))
        {
            cinemachine.SetActive(true); // Ativa o objeto
        }
    }
}

 

Um professor já respondeu

Envie você também uma dúvida grátis
Ver resposta
Minerva IA
do Profes
Respostas na hora
100% no WhatsApp
Envie suas dúvidas pelo App. Baixe agora
Precisa de outra solução? Conheça
Aulas particulares Encontre um professor para combinar e agendar aulas particulares Buscar professor