【问题标题】:Animating a camera to turn around the player, then continue tracking player动画摄像机转动玩家,然后继续跟踪玩家
【发布时间】:2016-02-17 20:50:24
【问题描述】:

所以为了解释我想要实现的目标,我使用“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;
    }
}

【问题讨论】:

  • 澄清一下:你的核心问题是当按下'E'时相机围绕玩家平滑旋转;和动画是一个单独的东西。我读对了吗?
  • @andeart 很抱歉让它变得混乱,我的意思是我尝试从动画窗口为相机设置动画但是当我这样做时我无法让它跟踪玩家,或者如果我可以的话动画会混乱当从代码中调用它时,是的,我想一次将相机平滑地围绕玩家旋转 90 度。
  • @andeart 是的,我有,但是问题是相机是 45 度角,所以当它旋转时它会失去玩家的视线,因为它围绕局部轴而不是全局轴旋转
  • 我认为您正在围绕自身旋转它。我在下面的答案中添加了一些示例代码来帮助您入门。

标签: c# unity3d unity5


【解决方案1】:

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

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

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

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 1970-01-01
    • 2018-04-08
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    相关资源
    最近更新 更多