• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zmiana aktywnej kamery

Object Storage Arubacloud
0 głosów
127 wizyt
pytanie zadane 11 lutego 2020 w OpenGL, Unity przez Alan Kruszyński Obywatel (1,410 p.)

Ten skrypt powinien zmieniać w grze aktywną kamerę przy naciśnięciu klawiszy "1" lub "2", jednak nic się nie dzieje. Proszę o pomoc.

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

public class CameraControl : MonoBehaviour
{
    public GameObject Camera1;
    public GameObject Camera2;

    public GameObject Control1;
    public GameObject Control2;
    // Start is called before the first frame update
    void Start()
    {


    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Alpha1))
        {
            
            StartCoroutine(ViewOne());
        }
        if (Input.GetKeyDown(KeyCode.Alpha2))
        {
            StartCoroutine(ViewTwo());
        }
    }

    string ViewOne()
    {
        Camera1.SetActive(true); //aktywujemy pierwszą kamerę
        Camera2.SetActive(false); //dezaktywujemy drugą kamerę

        Control1.GetComponent<PlayerControler>().enabled = true; //aktywujemy w pierwszej postaci (chyba to jest postać) komponent PlayerControler
        Camera1.GetComponent<AudioListener>().enabled = true; //aktywujemy w pierwszej kamerze audiolistener

        Camera2.GetComponent<AudioListener>().enabled = false; //dezaktywujemy w drugiej kamerze audiolistener
        Control2.GetComponent<RigidbodyControler>().enabled = false; //dezaktywujemy w drugiej postaci komponent RigidbodyControler
        return "string";
    }
    string ViewTwo()
    {
        if (!Control1.GetComponent<CharacterController>().isGrounded) { return "string"; } //jeżeli pierwsza postać nie jest na ziemi to tutaj kończymy wykonywanie funkcji

        Camera2.SetActive(true); //aktywujemy drugą kamerę
        Camera1.SetActive(false); //dezaktywujemy pierwszą kamerę

        Control1.GetComponent<PlayerControler>().enabled = false; //dezaktywujemy w pierwszej postaci komponent PlayerControler
        Camera1.GetComponent<AudioListener>().enabled = false; //dezaktywujemy w pierwszej kamerze audiolistener

        Camera2.GetComponent<AudioListener>().enabled = true; //aktywujemy w drugiej kamerze audiolistener
        Control2.GetComponent<RigidbodyControler>().enabled = true;  //aktywujemy w drugiej postaci komponent RigidbodyControler
        return "string";
    }
}

StartCoroutine() pobiera argument typu string, kompilator wyrzucał błędy i żądał by funkcja coś zwracała, nie wiedziałem jak temu zaradzić, więc wpisałem na koniec funkcji return "string:"

komentarz 11 lutego 2020 przez adrian17 Ekspert (345,620 p.)
To zakładam że jeszcze nie wiesz o coroutines.

A bardziej bazowe pytanie: po co używasz StartCoroutine(), zamiast po prostu wywołać funkcję bezpośrednio?

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 762 wizyt
pytanie zadane 8 października 2018 w OpenGL, Unity przez HitMan Użytkownik (850 p.)
0 głosów
1 odpowiedź 316 wizyt
pytanie zadane 4 kwietnia 2016 w JavaScript przez Barus Stary wyjadacz (14,120 p.)
0 głosów
1 odpowiedź 615 wizyt
pytanie zadane 9 sierpnia 2019 w JavaScript przez Luckyluck87 Użytkownik (660 p.)

92,661 zapytań

141,556 odpowiedzi

319,998 komentarzy

62,028 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...