当我第一个玩家进入房间时,我正试图制作一个房间的飞盘照相机。我已经在相机上录制了动画,但是当我在相机之间切换时我遇到了麻烦。我已经阅读了很多关于它的研究,但实际上我不知道我做错了什么。我将不胜感激任何帮助。谢谢!
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;
}
}
答案 0 :(得分:0)
此处不需要使用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;
}
希望这有帮助。