У меня есть этот ящик стола, который я пытаюсь анимировать, где, если игрок нажимает «E», ящик открывается и остается открытым.И когда игрок снова нажимает «E», дверь закрывается.Сценарий основан на том, что игрок вводит триггер, и у меня он на нескольких дверях в моей сцене.Однако я сталкиваюсь с несколькими проблемами: с выдвижным ящиком, когда игрок нажимает «E», коллайдер на двери движется, а с выдвижным ящиком GameObject - нет.Я пришел к выводу, что это не сценарий, потому что его работа находит двери, но я попробовал все остальное.Я приложу некоторые изображения для справки.
public class DoorScript : MonoBehaviour
{
public GameObject OpenPanel = null;
private bool _isInsideTrigger = false;
public Animator _animator;
public string OpenText = "Press 'E' to open";
public string CloseText = "Press 'E' to close";
private bool _isOpen = false;
private void Start()
{
OpenPanel.SetActive(false);
}
void OnTriggerEnter(Collider other)
{
if (other.tag == "Player")
{
_isInsideTrigger = true;
OpenPanel.SetActive(true);
UpdatePanelText();
}
}
private void UpdatePanelText()
{
Text panelText = OpenPanel.transform.Find("Text").GetComponent<Text>();
if (panelText != null)
{
panelText.text = _isOpen ? CloseText: OpenText;
}
}
void OnTriggerExit(Collider other)
{
if (other.tag == "Player")
{
_isInsideTrigger = false;
OpenPanel.SetActive(false);
}
}
private bool IsOpenPanelActive
{
get
{
return OpenPanel.activeInHierarchy;
}
}
// Update is called once per frame
void Update()
{
if (IsOpenPanelActive && _isInsideTrigger)
{
if (Input.GetKeyDown(KeyCode.E))
{
_isOpen = !_isOpen;
Invoke("UpdatePanelText", 1.0f);
_animator.SetBool("open", _isOpen);
}
}
}
} // Кредитный канал Jayanam Youtube для сценария