提问者:小点点

Unity3d OnTriggerEnter,动画


我想让我的角色在进入扳机时按下一个键时播放一段动画,但我想不通。你能帮忙吗?这里是我的代码

public Text text;
public Animator anim;

public void Start()
{
    text.enabled = false;
    anim = GetComponent<Animator>();
}

public void OnTriggerEnter()
{
    text.enabled = true;
}
   public void Update()
{
   if (Input.GetKeyDown("e"))
   {
    anim.Play("DoorOpen");
   } 
}

}


共1个答案

匿名用户

首先,OnTriggerEnter采用Collider类型的参数。否则它永远不会被Unity调用。

然后,在ontriggerexit中将bool标志设置为true并将其重置为false-例如,您可以使用正在设置的text.enabled

公共文本文本;大众动画师阿尼姆;

private void Start()
{
    text.enabled = false;
    anim = GetComponent<Animator>();
}

private void Update()
{
    if (text.enabled && Input.GetKeyDown(KeyCode.E))
    {
        anim.Play("DoorOpen");
    } 
}

private void OnTriggerExit (Collider other)
{
    text.enabled = false;
}

private void OnTriggerEnter(Collider other)
{
    text.enabled = true;
}

或者,您可以直接使用ontriggerstay,而不是在update中轮询检查它,只要您敲击触发器,就会重复调用该命令

public Text text;
public Animator anim;

private void Start()
{
    text.enabled = false;
    anim = GetComponent<Animator>();
}

private void OnTriggerStay(Collider other)
{
    if (Input.GetKeyDown(KeyCode.E))
    {
        anim.Play("DoorOpen");
    } 
}

private void OnTriggerExit (Collider other)
{
    text.enabled = false;
}

private void OnTriggerEnter(Collider other)
{
    text.enabled = true;
}