【问题标题】:Animation OnTrigger Unity动画 OnTrigger Unity
【发布时间】:2017-11-27 10:27:17
【问题描述】:

当我的第一人称玩家进入房间时,我正在尝试制作一个房间的飞盘相机。我已经在相机上录制了动画,但是当我在相机之间切换时遇到了麻烦。我已经阅读了很多关于它的研究,但我实际上不知道我做错了什么。我将不胜感激任何帮助。谢谢!

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;
    }
}

【问题讨论】:

    标签: c# animation unity3d camera


    【解决方案1】:

    这里不需要使用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;
    }
    

    要在动画完成时运行一些代码,您必须创建动画事件并将您的方法注册到它。 Have a look 了解如何实现。

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

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

    希望这会有所帮助。

    【讨论】:

    • 他 Umair,感谢您的回答。您的代码稍微修改了我正在尝试做的事情,因为在播放器为 OnTriggerEnter 时播放动画并在播放器为 OnTriggerExit 时将相机改回,我希望在动画完成时返回相机(我可以计算用我的实际代码)。此外,我仍然遇到与以前相同的错误,即屏幕上显示“显示 1,无摄像机渲染”的消息。我希望它可以帮助您理解我的问题。还是非常感谢!
    • 我已经更新了答案。这将帮助您解决问题。
    • 嘿,Umair!非常感谢你的帮助!我发现了错误,基本上我的动画相机有一个不同的目标显示器作为主要显示器,也就是说没有渲染。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2022-01-15
    • 2020-09-23
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-27
    • 2016-03-30
    相关资源
    最近更新 更多