我需要在与这部分代码同时进行缩放和定位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精灵的特定点,比如图像中的代码:
有什么帮助吗?
发布于 2022-10-18 10:33:31
transform.localPosition = Vector3.Lerp(startPosition, positionToMoveTo, 1);意味着忽略startPosition并立即跳转到positionToMoveTo。一般说来,我不会把两者混为一谈,决定两者之一。
在你的另一次尝试中,也有一些奇怪的事情
startPosition和startScalelocalPosition,但是在开始和结束时切换到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://stackoverflow.com/questions/74101462
复制相似问题