Камера игрока не деактивируется при вызове определенного скрипта.C#

Место общения программистов C#
Ответить
Anonymous
 Камера игрока не деактивируется при вызове определенного скрипта.

Сообщение Anonymous »

Сейчас я работаю над небольшим проектом, в котором игрок может прятаться в шкафчике и под столом. У меня так получается, что когда игрок прячется в шкафчике, объект игрока автоматически исчезает, и это уже что-то, но всякий раз, когда я взаимодействую со столом, к которому прикреплен скрипт. Кажется, оно не исчезает. Скорее он просто застревает, это очень раздражает, потому что я пытаюсь удалить игрока, когда он прячется под столом. Может ли кто-нибудь помочь мне с этой проблемой? Я везде искал, как решить эту проблему, и не думаю, что проблема связана с самим кодом. Но мне просто нужно было спросить об этом.
Это сценарий для таблицы:

Код: Выделить всё

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

public class TriggerTable : MonoBehaviour
{
[SerializeField] private bool isHidingTable;
[SerializeField] private bool canHideTable;
[SerializeField] private Transform cameraTablePos;
[SerializeField] private new Transform camera;
[SerializeField] private GameObject player;
[SerializeField] private Camera playerCamera;
[SerializeField] private Camera tableCamera;

void Start()
{
cameraTablePos = GameObject.Find("TablePosition").transform;
player = GameObject.Find("Player");

playerCamera = GameObject.Find("Main Camera").GetComponent();
tableCamera = GameObject.Find("TableCamera").GetComponent();

playerCamera.enabled = true;
tableCamera.enabled = false;

tableCamera.transform.SetParent(null);
}

void switchToTableCam()
{
player.SetActive(false);
playerCamera.enabled = false;
tableCamera.enabled = true;
}

void switchToPlayerCam()
{
player.SetActive(true);
tableCamera.enabled = false;
playerCamera.enabled = true;
}

private void OnTriggerEnter(Collider collision)
{
if (collision.CompareTag("Player"))
{
canHideTable = true;
}
}

private void OnTriggerExit(Collider collision)
{
if (collision.CompareTag("Player"))
{
canHideTable = false;
}
}

void Update()
{
if (Input.GetKeyDown(KeyCode.E) && canHideTable)
{
isHidingTable = !isHidingTable;
}

if (isHidingTable)
{
tableCamera.transform.SetParent(null);
camera.parent = cameraTablePos;
camera.position = cameraTablePos.position;
switchToTableCam();
}

else
{
switchToPlayerCam();
}

}
}
Это скрипт для шкафчика:

Код: Выделить всё

using System;
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UI;

public class TriggerLockerDoor : MonoBehaviour
{
[SerializeField] private bool isHidingLocker;
[SerializeField] private bool canHideLocker;
[SerializeField] private Transform cameraLockerPos;
[SerializeField] private new Transform camera;
[SerializeField] private GameObject player;
[SerializeField] private Camera playerCamera;
[SerializeField] private Camera lockerCamera;

void Start()
{
cameraLockerPos = GameObject.Find("LockerPosition").transform;
player = GameObject.Find("Player");

playerCamera = GameObject.Find("Main Camera").GetComponent();
lockerCamera = GameObject.Find("LockerCamera").GetComponent();

playerCamera.enabled = true;
lockerCamera.enabled = false;

lockerCamera.transform.SetParent(null);
}

void switchToLockerCam()
{
playerCamera.enabled = false;
lockerCamera.enabled = true;
}

private void OnTriggerEnter(Collider collision)
{
if (collision.CompareTag("Player"))
{
canHideLocker = true;
}
}

private void OnTriggerExit(Collider collision)
{
if (collision.CompareTag("Player"))
{
canHideLocker = false;
}
}

void Update()
{
if (Input.GetKeyDown(KeyCode.E) &&  canHideLocker)
{
isHidingLocker = !isHidingLocker;
}

if (isHidingLocker)
{
lockerCamera.transform.SetParent(null);
camera.parent = cameraLockerPos;
player.SetActive(false);
camera.position = cameraLockerPos.position;
switchToLockerCam();
}

else
{
player.SetActive(true);
lockerCamera.enabled = false;
playerCamera.enabled = true;
}
}

}
Вот видео моего игрового пространства и тип проблемы, с которой я столкнулся.
[Ссылка на видео моего игрового пространства1

Подробнее здесь: https://stackoverflow.com/questions/791 ... ain-script
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»