2017-04-23 105 views
0

我正在爲教育目的而開發某種寺廟運行遊戲項目。而且我已經創建了一個劇本,應該把注意力集中在一點點高的角色上,然後把角色改變爲角色。就像在寺廟裏跑時一樣,當遊戲劇本時相機慢慢向玩家傾斜。這裏是我的腳本Unity相機動畫無效?

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); 
     } 

    } 
} 

回答

0

你很近,但你的轉換值需要不斷增加,以使你的Lerp正常工作。嘗試改變這一行:

transition = Time.deltaTime* 1/animationduration; 

transition += Time.deltaTime* 1/animationduration; 
1

行之後是錯誤

this.transform.LookAt (characterposition, Vector3.up); 

注視()方法需要變換類型的參數,而不是的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); 
} 

此外,您在每一幀調用FindObjectOfType方法會導致較差的性能。 看看下面的鏈接LookAt