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