对摄像机进行动画处理以扭转玩家,然后继续跟踪玩家

本文关键字:玩家 然后 跟踪 继续 摄像机 动画 处理 | 更新日期: 2023-09-27 18:35:10

为了解释我想要实现的目标,我使用"E"键将摄像机围绕播放器旋转90度,然后继续跟踪玩家。我不知道如何顺利地做到这一点 - 到目前为止,我已经尝试了停止摄像机跟踪播放器的动画,一旦动画完成,动画就会返回到原始位置。

这是我当前的代码:

using UnityEngine;
using System.Collections;
public class TCam : MonoBehaviour {

    public Transform target;
    private Animator animator;
    private Vector3 positionOffset ;
    int i =0;
    // Use this for initialization
    void Start () {
        //positionOffset = target.transform.position + transform.position;
        positionOffset = new Vector3(-10, 10,0);
        animator = GetComponent<Animator> ();
        animator.enabled = true;
    }
    // Update is called once per frame
    void Update () {
        if (Input.GetKeyDown (KeyCode.E)) {
            animator.SetTrigger ("switch");
            transform.rotation = Quaternion.Euler (45, transform.rotation.eulerAngles.y + 90, 0);
            target.transform.rotation = Quaternion.Euler (45, target.transform.rotation.eulerAngles.y + 90, 0);
            if (i == 0) {
                positionOffset = new Vector3 (0, 10, 10);
                i++;
            } else if (i == 1) {
                positionOffset = new Vector3 (10, 10, 0);
                i++;
            } else if (i == 2) {
                positionOffset = new Vector3 (0, 10, -10);
                i++;
            } else if (i == 3) {
                positionOffset = new Vector3 (-10, 10, 0);
                i = 0;
            }
        } else if (Input.GetKeyDown (KeyCode.Q)) {
            transform.Rotate (-45, 0, 0);
            transform.Rotate (0, -90, 0);
            transform.Rotate (45, 0, 0);
            target.transform.Rotate (-45, 0, 0);
            target.transform.Rotate (0, -90, 0);
            target.transform.Rotate (45, 0, 0);
        }
        transform.position = target.position + positionOffset;
    }
}

对摄像机进行动画处理以扭转玩家,然后继续跟踪玩家

不要使用四元数进行设置,而是尝试使用 Transorm.RotateAround() 方法,如下所示:

transform.RotateAround(target.transform.position, Vector3.up, 40 * Time.deltaTime);

有条件在超过原始旋转 90 度时停止。同样,向后工作以将其移回。

我希望这有所帮助!