我需要使用這部分代碼同時在 Unity 中調整縮放和調整 GameObject 的位置,但首先調整游戲物件的比例然后設定位置。
iTween.ScaleTo(gameObject, Scale, 1f);
transform.localPosition = Vector3.Lerp(startPosition, positionToMoveTo, 1);
我也試試這個:
IEnumerator LerpPosition(Vector3 targetPosition, float duration)
{
// startPosition = transform.position;
while (time < duration)
{
transform.localPosition = Vector3.Lerp(startPosition, targetPosition, time / duration);
transform.localScale = Vector3.Lerp(transform.localScale, Scale, time / duration);
time = Time.deltaTime;
yield return null;
}
transform.position = targetPosition;
}
但我得到了同樣的結果。
實際上,我需要使用影像中的這些代碼放大 2D 精靈的特定點:
在此處輸入影像描述
請問有什么幫助嗎?
uj5u.com熱心網友回復:
transform.localPosition = Vector3.Lerp(startPosition, positionToMoveTo, 1);
表示忽略startPosition并立即跳轉到positionToMoveTo。一般來說,我不會將補間與協程合并,決定其中任何一個。
在您的其他嘗試中,也有一些奇怪的事情
- 您需要存盤
startPosition和startScale - 您曾經使用過
localPosition,但在開始和結束時切換到position(=絕對世界空間),這當然可能完全不同
所以像例如
IEnumerator LerpPositionAndScale(Vector3 targetLocalPosition, Vector3 targetLocalScale, float duration)
{
var startPosition = transform.localPosition;
var startScale = transfor.localScale;
for(var timePassed = 0f; timePassed < duration; timePassed = Time.deltaTime)
{
var factor = timePassed / duration;
// [optional] add ease-in and -out
factor = Mathf.SmoothStep(0, 1, factor);
transform.localPosition = Vector3.Lerp(startPosition, targetLocalPosition, factor);
transform.localScale = Vector3.Lerp(startScale, targetLocalScale, factor);
yield return null;
}
transform.localPosition = targetLocalPosition;
transform.localScale = targetLocalScale;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/518179.html
標籤:C#unity3d
