2016-02-24 34 views
0

我是一個初學者,並跟隨球員是生澀的相機問題。我有一個只能在攻擊時向上移動的玩家,以及其他在x方向移動的敵人。但是當玩家開始跳躍時,攝像機會開始生澀運動(特別是接近敵人),並且也會對敵人的運動產生不利影響。下面是我對CameraFollow.`攝像機下面的球員是生澀的,有不良的視覺效果

public class CameraFollow : MonoBehaviour { 
[SerializeField] 
private float yMin; 
[SerializeField] 
private float yMax; 
[SerializeField] 
private float xMin; 
[SerializeField] 
private float xMax; 
private Transform target; 


void Start() {  
    target = GameObject.Find("Player").transform; 
    //player = GameObject.FindGameObjectWithTag("Player"); 
} 

void LateUpdate() {   
    transform.position = new Vector3 (Mathf.Clamp(target.position.x, xMin, xMax), Mathf.Clamp(target.position.y, yMin, yMax), transform.position.z);   
    if (Input.GetKeyDown(KeyCode.Escape)){ 
     Application.Quit();    
    }  
} 
+0

你能花點時間點擊編輯並從代碼示例中刪除不必要的空白/換行符嗎?謝謝 – Fattie

+1

請注意,**順利跟隨**腳本完全**內置**統一..只需點擊添加它。谷歌。 「標準資產」 – Fattie

+0

你能提供我的鏈接嗎?謝謝 –

回答

2

代碼它抽搐的原因是因爲你設置直接在相機的變換,而不是(例如)順利lerping它。我建議使用Vector3.Lerp

實例代替,:

transform.position = new Vector3 (Mathf.Clamp(target.position.x, xMin, xMax), Mathf.Clamp(target.position.y, yMin, yMax), transform.position.z);

嘗試一些這樣的詩句:

Vector3 targetPos = new Vector3 (
    Mathf.Clamp(target.position.x, xMin, xMax), 
    Mathf.Clamp(target.position.y, yMin, yMax), 
    transform.position.z 
    ); 

transform.position = Vector3.Lerp(transform.position, targetPos, 0.5f); 

我希望幫助!

+0

仍然是一樣的東西。當玩家接近敵人時,相機不穩定動作開始。敵人向x方向移動,玩家正在朝y方向移動。 –

+0

玩家正在跳屏幕水龍頭。 public Vector2 jumpForce = new Vector2(0,200); \t空隙開始(){ \t \t \t } \t \t 空隙更新() \t { \t \t如果(Input.GetMouseButtonDown(0)) \t \t \t { \t \t \t \t GetComponent ( ).velocity = Vector2.zero; \t \t \t \t GetComponent ().AddForce(jumpForce); \t \t \t \t \t} \t \t} \t} –

+0

我明白了。你可以嘗試減少lerp因子,即使用類似於0.1f的東西(或者甚至更小,如果它仍然不穩定)作爲lerp函數中的第三個參數? – andeart