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á 9 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
Tire dúvidas com IA
Resposta na hora da Minerva IA
Enviar dúvida
Professor Moises E.
Respondeu há 3 meses
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
Prefere professores para aulas particulares ou resolução de atividades?
Aulas particulares
Encontre um professor para combinar e agendar aulas particulares Buscar professor
Tarefas
Envie sua atividade, anexe os arquivos e receba ofertas dos professores Enviar tarefa