我想保存cursor
at start 的初始位置,并且在cursor
移動并釋放滑鼠按鈕后,它應該回傳到其原始位置(使用10f * Time.deltaTime
),但這不起作用
[SerializeField] private Transform cursor;
private Vector3 OriginalPosition;
void Start()
{
OriginalPosition = cursor.transform.position;
Debug.Log(OriginalPosition);
}
void OnMouseUp()
{
Debug.Log("MouseUp");
cursor.transform.position = Vector3.MoveTowards(cursor.position, OriginalPosition, 10f * Time.deltaTime);
}
uj5u.com熱心網友回復:
問題是您假設呼叫 MoveForward 將使您的游戲物件一直跟隨回到原始位置,這不會發生,您實際上在做的是對游標說“當我釋放滑鼠按鈕時,計算我當前位置和原始位置之間的方向,并以每秒 10 個單位的速度移動它在 1 幀中的量”。您需要在 N 幀期間進行 MoveToward 操作,為此您需要使用協程,因此請遵循類似的代碼
public Transform cursor;
public Transform originalPosition;
public void Move()
{
StartCoroutine(MoveToTargetPosition());
IEnumerator MoveToTargetPosition()
{
while (Vector3.Distance(cursor.position, originalPosition.position) >= .5f)
{
yield return null;
cursor.position = Vector3.MoveTowards(cursor.position, originalPosition.position, 10f * Time.deltaTime);
}
}
}
希望這有幫助
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/533272.html
標籤:C#unity3d
上一篇:除了0之外,最短的WaitForSeconds時間是多少?
下一篇:我通常使用的計數腳本現在不起作用