【发布时间】:2018-11-30 19:43:28
【问题描述】:
我有一个我正在尝试制作动画的桌子抽屉,如果玩家按下“E”,抽屉就会打开并保持打开状态。当玩家再次按下“E”时,门会关闭。 该脚本基于玩家输入触发器,并且我在场景中的多个门上都有它。 我遇到了一些问题,当玩家按下“E”时抽屉会移动,但抽屉游戏对象不会移动。 我得出的结论是它不是脚本,因为它可以在门上找到,但我已经尝试了其他所有方法。我会附上一些图片以供参考。
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);
}
}
}
} //Credit Jayanam Youtube 频道的脚本
【问题讨论】:
-
听起来更像是代码不起作用..添加一些调试语句,显示结果和代码,它会更容易帮助你
-
@BugFinder 实际上不是代码,而是造成问题的静态批处理