Превключване на Unity3D камера

Наистина бих се радвал на помощ за това, че превключването на камерата работи в моята игра. Въпросът е, че играта започва, играчът вижда топката (това е нещо като основната игра с търкаляне на топка), започва да се движи нагоре и трябва да се качи отново, но в друга посока, така че имам нужда камерата да е по начина, по който те виждат какво правят. Разположих правилно камерите, но не мога да разбера как да го напиша така, че да работи правилно. Веднъж го накарах, но обърках нещо и не мога да го накарам да работи отново.

Това е кодът досега, който събрах от моите търсения:

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

public class CameraSwitch : MonoBehaviour
{
    public Camera front_camera;//assign your main camera here
    public Camera back_camera;//assign your top camera here

    void Start()
    {
        front_camera.enabled = true;
        back_camera.enabled = false;
    }
    void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.name == "Pickup")
        {
            front_camera.enabled = false;
            back_camera.enabled = true;
        }
        else if (other.gameObject.name == "Ground")
        {
            front_camera.enabled = true;
            back_camera.enabled = false;
        }
    }
}

person Community    schedule 21.11.2017    source източник
comment
Не мога да разбера как да го напиша така, че да работи правилно. Как работи сега?   -  person Umair M    schedule 21.11.2017
comment
Сигурни ли сте, че всички предпоставки за откриване на сблъсък са изпълнени? (Rigidbody най-малко на един обект, колайдери и на двата, един колайдер с отметнат isTrigger и скриптът на желания колайдер)   -  person Hellium    schedule 21.11.2017
comment
и двете камери имат ли етикета на основната камера?   -  person Tobias Theel    schedule 21.11.2017
comment
@umairM не работи   -  person    schedule 21.11.2017
comment
@Hellium Да, направил съм ги всичките. Малкият обект за вдигане, който топката трябва да вдигне/сблъска, за да задейства превключвателя на камерата, но той не го прави.   -  person    schedule 21.11.2017
comment
Бих предложил да използвате сравнение на маркери вместо имена   -  person Umair M    schedule 21.11.2017
comment
Опитайте да използвате Debug.Log("<your text>"), за да видите какво става.   -  person obywan    schedule 21.11.2017
comment
С помощта на Debug.Log(‹вашият текст›) открих, че тази част от кода: void OnTriggerEnter(Collider other) { if (other.gameObject.name == Pickup) { front_camera.enabled = false; back_camera.enabled = true; се изпълнява от самото начало и когато се сблъска с пикапа, няма да задейства нищо.   -  person    schedule 21.11.2017
comment
уверете се, че вашият скрипт не деактивира.   -  person Muhammad Faizan Khan    schedule 21.11.2017
comment
@MohammadFaizanKhan как да направя това? Благодаря   -  person    schedule 21.11.2017


Отговори (2)


Изглежда, че вашият скрипт дезактивира (може би неговият прикачен към камерата) следователно вие получавате проблема. Уверете се, че CameraSwitch не се деактивира, в противен случай няма проблем с кода.

Като алтернатива можете да прикачите скрипта за превключване на камерата към топката и да поставите два колайдера, които покриват съответно зоната на предната и задната камера. нещо като това. въведете описание на изображението тук

person Muhammad Faizan Khan    schedule 22.11.2017

Опитах кода от Ръководството за скриптове на Unity и работи добре.

Моля, разгледайте този справочник за скриптове на Camera.main

person Monster Brain    schedule 22.11.2017
comment
Искам превключването на камерата да се задейства при сблъсък, а не че трябва да се натисне бутон и това да го задейства. Благодаря ти! - person ; 22.11.2017