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

Zmiana aktywnej kamery

Aruba Cloud - Virtual Private Server VPS
0 głosów
159 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 Mentor (352,580 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ź 791 wizyt
pytanie zadane 8 października 2018 w OpenGL, Unity przez HitMan Użytkownik (850 p.)
0 głosów
1 odpowiedź 379 wizyt
pytanie zadane 4 kwietnia 2016 w JavaScript przez Barus Stary wyjadacz (14,120 p.)
0 głosów
1 odpowiedź 750 wizyt
pytanie zadane 9 sierpnia 2019 w JavaScript przez Luckyluck87 Użytkownik (660 p.)

93,327 zapytań

142,323 odpowiedzi

322,396 komentarzy

62,657 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...