2017-06-04 59 views
-3

我想使用Vector3.Lerp()而不使用StartCoroutine移動精靈。 開始和目標點要在腳本中設置。 我拖動&將精靈放入Unity編輯器並運行它。 但是,精靈不會移動。謝謝。Unity:如何使用Vector3.Lerp()在不使用StartCoroutine的情況下移動精靈

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

public class MyScript1 : MonoBehaviour { 

public Sprite sprite; 

GameObject gameObject; 
SpriteRenderer spriteRenderer; 
Vector3 startPosition; 
Vector3 targetPosition; 

void Awake() 
{ 
    gameObject = new GameObject(); 
    spriteRenderer = gameObject.AddComponent<SpriteRenderer>();   
} 

private void Start() 
{ 
    spriteRenderer.sprite = sprite; 
    startPosition = new Vector3(-300, 100, 0); 
    targetPosition = new Vector3(100, 100, 0);   
} 
void Update() 
{   
    transform.position = Vector3.Lerp(startPosition, targetPosition , Time.deltaTime*2f); 
} 
} 
+0

這個問題已經被標記爲重複,再張貼不會有任何區別.. – Lestat

+0

哪一部分是相同的。你在跟我開玩笑嗎? – user1232250

+0

@Lestat你可以鏈接dup嗎? –

回答

0

實際上,它確實移動,但只是一點點,只有一次。

問題在於lerp方法本身:傳遞Time.deltaTime * 2f作爲第三個參數是錯誤的。

lerp方法的第三個參數決定了startPosition和targetPosition之間的一個點,它應該在0和1之間。如果傳遞0,它返回startPosition,在你的情況下,它返回一個非常非常接近startPosition的點,極少數比範圍(0..1)

我建議你閱讀unity docs about this method

像這樣將工作:

void Update() 
{   
    t += Time.deltaTime*2f; 
    transform.position = Vector3.Lerp(startPosition, targetPosition , t); 
} 
+0

這是一個答案。有些人只是認爲所有的問題都是一樣的,沒有任何不妥。 – user1232250

相關問題