我有这个脚本:
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");
}
}
}
我怎样才能打开动画的大门?
答案 0 :(得分:0)
在为该门设置动画之前,需要了解一些事项。 在Unity中可以使用多种方法为对象设置动画。对于诸如此类的简单事情,您可以决定仅旋转对象(但需要了解,您将需要Coroutine或Mathf.MoveTowards或Mathf.Lerp方法,以避免在Update中调用所有内容时立即移动)。 但是,您也可以在Blender等应用程序中使用其他人制作的动画。 或最终在游戏编辑器中使用Unity创建动画,然后创建一个Animator来动画化您的门。
我认为您应该使用这种方式。 首先请遵循以下官方手册: https://docs.unity3d.com/Manual/animeditor-CreatingANewAnimationClip.html
创建剪辑以打开门。 这真的很直观,您甚至不需要编写代码。
之后,您应该创建一个Animator Controller: https://docs.unity3d.com/Manual/class-AnimatorController.html
接下来,您将用动画创建新状态,并且将在初始状态与“开门”动画之间建立连接。 之后,您只需在Animator控制器中创建一个简单的布尔值即可。
您将添加
this.GetComponent()。SetBool(“ yourboolintheanimatorcontroller”,true);
到脚本(当然,只有当您的Animator Controller在分配给脚本的对象中时,此命令才有效...否则,您应该创建一个新的Animator变量并进行分配(例如,可以将其公开并分配)在编辑器中)。