动画启动统一



当我的第一人称播放器进入它时,我正在尝试制作房间的飞盘摄像头。我已经在相机上录制了动画,但是当我在相机之间进行更改时,我遇到了麻烦。我读了很多关于它的研究,但实际上我不知道我在做什么错。我将感谢任何帮助。谢谢!

void OnTriggerEnter(Collider other)
{
    inTrigger = true;
}
void OnTriggerExit(Collider other)
{
    inTrigger = false;
}
void Start()
{
    anim = GetComponent<Animation>();
    cam = GetComponent<Camera>();
}
// Update is called once per frame
void Update()
{
    if (inTrigger/*&& !anim.isPlaying*/)
    {
        anim.Play("AnimateCameraFirst");
    }
    if (anim.IsPlaying("AnimateCameraFirst"))
    {
        cam.gameObject.SetActive(true);
        FPCam.gameObject.SetActive(false);
    }
    else
    {
        FPCam.GetComponent<Camera>().enabled = true;
        cam.GetComponent<Camera>().enabled = false;
    }
}

在这里不需要使用Update()。以下代码应该足够:

首先,将FPCam GameObject更改为Camera以避免GetComponent调用:

public Camera FPCam; // you have to reassign camera reference through inspector.
Camera cam; // as usual
void Start()
{
    anim = GetComponent<Animation>();
    cam = GetComponent<Camera>();
}
void OnTriggerEnter(Collider other)
{
    anim.Play("AnimateCameraFirst");
    cam.enabled = true;
    FPCam.enabled = false;
}
void OnTriggerExit(Collider other)
{
    FPCam.enabled = true;
    cam.enabled = false;
}

要运行动画完成时,您必须创建动画事件并向其注册您的方法。看看如何实现此问题。

您可以创建此方法并将其注册到在动画结束时触发的事件:

public void CameraFirstAnimation_Stopped()
{
    FPCam.enabled = true;
    cam.enabled = false;
}

希望这会有所帮助。

最新更新