簡體   English   中英

為相機設置動畫以使播放器轉過身,然后繼續跟蹤播放器

[英]Animating a camera to turn around the player, then continue tracking player

因此,為了解釋我要實現的目標,我使用“ 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度時停止的條件。 同樣,向后移動以將其移回。

希望對您有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM