【问题标题】:How I can open a door with animations?如何用动画打开一扇门?
【发布时间】:2018-12-13 16:25:53
【问题描述】:

我有这个脚本:

Ray ray = new Ray (cam.transform.position, cam.transform.forward);
        RaycastHit hit;
        Debug.DrawRay (transform.position, ray.direction * 50f);
        if (Input.GetKeyDown (KeyCode.E)) {

            if (Physics.Raycast (ray, out hit, 50.0f)) {
                if (hit.collider.gameObject.tag == "Door") {

                    Debug.Log ("YEAH");
                }
            }
        } 

我怎样才能开始动画开门?

【问题讨论】:

    标签: animation unity3d scripting


    【解决方案1】:

    在为那扇门设置动画之前,您需要了解一些事项。 在 Unity 中有多种方法可以为对象设置动画。对于像这样的简单事情,您可以决定只旋转对象(但您需要了解,当您在 Update 中调用所有内容时,您将需要 Coroutine 或 Mathf.MoveTowards 或 Mathf.Lerp 方法来避免即时移动)。 但您也可以在 Blender 等应用程序中使用其他人制作的动画。 或者最后在游戏编辑器中使用 Unity 创建一个动画,然后创建一个 Animator 来为您的门设置动画。

    我认为你应该使用这种方式。 首先遵循这个官方手册: https://docs.unity3d.com/Manual/animeditor-CreatingANewAnimationClip.html

    创建剪辑以打开您的门。 它非常直观,您甚至不需要编写代码。

    之后你应该创建一个动画控制器: https://docs.unity3d.com/Manual/class-AnimatorController.html

    然后,您将使用动画创建一个新状态,并在初始状态与“开门”动画之间建立联系。 之后,您只需创建一个简单的 bool(在您的 Animator Controller 中)。

    你会添加

    this.GetComponent().SetBool("nameofyourboolintheanimatorcontroller", true);

    到您的脚本(当然,这仅在您的 Animator Controller 位于分配给您的脚本的对象中时才有效......如果不是,您应该创建一个新的 Animator 变量并分配它(例如,您可以将其公开并分配它在编辑器中)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多