C# 统一相机动画不工作?

C# 统一相机动画不工作?,c#,unity3d,C#,Unity3d,我正在做一个庙宇游戏项目,只是为了教育目的。我已经创建了一个脚本,它应该从一点高度关注角色,然后将其位置更改为角色。就像在太阳穴奔跑时,相机慢慢地向玩家靠近时,游戏脚本。这是我的剧本 using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraMotor : MonoBehaviour { private Vector3 ofset; priv

我正在做一个庙宇游戏项目,只是为了教育目的。我已经创建了一个脚本,它应该从一点高度关注角色,然后将其位置更改为角色。就像在太阳穴奔跑时,相机慢慢地向玩家靠近时,游戏脚本。这是我的剧本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraMotor : MonoBehaviour {
    private Vector3 ofset;
    private Vector3 characterposition;

    private float transition =0.0f;
    private float animationduration = 2.0f;
    private Vector3 animationoffset = new Vector3(0,2f,2f);
    void Start () {
        ofset = GameObject.FindObjectOfType<CharacterController> ().transform.position - this.transform.position;
    }

    // Update is called once per frame
    void Update () {
        characterposition = GameObject.FindObjectOfType<CharacterController> ().transform.position - ofset;
        characterposition.x = 1.3f;
        characterposition.y = Mathf.Clamp (characterposition.y, 3f, 5f);
        if (transition > 1.0f) {
            this.transform.position = characterposition;
        } else {
            this.transform.position = Vector3.Lerp (characterposition + animationoffset, characterposition, transition);
            transition =  Time.deltaTime* 1 / animationduration;
            this.transform.LookAt (characterposition, Vector3.up);
        }

    }
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共级摄像马达:单一行为{
集合的私有向量3;
私有向量3字符位置;
私有浮动转换=0.0f;
私有浮动动画持续时间=2.0f;
私有向量3动画偏移=新向量3(0,2f,2f);
无效开始(){
ofset=GameObject.FindObjectOfType().transform.position-this.transform.position;
}
//每帧调用一次更新
无效更新(){
characterposition=GameObject.FindObjectOfType().transform.position-of set;
characterposition.x=1.3f;
characterposition.y=数学夹具(characterposition.y,3f,5f);
如果(转换>1.0f){
this.transform.position=字符位置;
}否则{
this.transform.position=Vector3.Lerp(characterposition+animationoffset,characterposition,transition);
过渡=时间。deltaTime*1/动画持续时间;
this.transform.LookAt(characterposition,Vector3.up);
}
}
}

下面的行是错误的

this.transform.LookAt (characterposition, Vector3.up);
LookAt()方法需要转换类型参数,而不是Vector3。试试这些

private Vector3 ofset;
private Vector3 characterposition;
private CharacterController characterCon;

private float transition =0.0f;
private float animationduration = 2.0f;
private Vector3 animationoffset = new Vector3(0,2f,2f);

void Start () {
    ofset = GameObject.FindObjectOfType<CharacterController> ().transform.position - this.transform.position;
    characterCon = GameObject.FindObjectOfType<CharacterController> ().GetComponent<CharacterController>();
}

void Update () {

    characterposition = characterCon.transform.position - ofset;
    characterposition.x = 1.3f;
    characterposition.y = Mathf.Clamp (characterposition.y, 3f, 5f);
    if (transition > 1.0f) {
        this.transform.position = characterposition;
    } else {
        this.transform.position = Vector3.Lerp (characterposition + animationoffset, characterposition, transition);
        transition =  Time.deltaTime * 1 / animationduration;
    }

    this.transform.LookAt (characterCon.transform, Vector3.up);
}
集合的私有向量3;
私有向量3字符位置;
私有字符控制器字符con;
私有浮动转换=0.0f;
私有浮动动画持续时间=2.0f;
私有向量3动画偏移=新向量3(0,2f,2f);
无效开始(){
ofset=GameObject.FindObjectOfType().transform.position-this.transform.position;
characterCon=GameObject.FindObjectOfType().GetComponent();
}
无效更新(){
characterposition=characterCon.transform.position-集合的位置;
characterposition.x=1.3f;
characterposition.y=数学夹具(characterposition.y,3f,5f);
如果(转换>1.0f){
this.transform.position=字符位置;
}否则{
this.transform.position=Vector3.Lerp(characterposition+animationoffset,characterposition,transition);
过渡=Time.deltaTime*1/动画持续时间;
}
this.transform.LookAt(characterCon.transform,Vector3.up);
}
此外,在每一帧调用FindObjectOfType方法会导致性能不佳。
查看以下链接

您已接近成功,但您的转换值需要不断增加,才能使Lerp正常工作。尝试更改此行:

transition =  Time.deltaTime* 1 / animationduration;

transition +=  Time.deltaTime* 1 / animationduration;