。Slerp的第三参数

问题描述 投票:0回答:1

我正在尝试将附着此脚本的对象相对于计时器已充电的距离从其位置沿直线移动到预定位置。我希望计时器在中途充电至最大时处于中途,并在充满电时等到该点。我的问题是,无论到达多长时间,它始终会到达该时间的一小部分计时器应该收费。我尝试通过将当前电量除以最大电量来找到电量百分比,但这没有用。有解决方案吗?

transform.position = Vector3.Slerp(transform.position, pos, (chargeTimer/maxCharge));
c# unity3d
1个回答
0
投票

首先,如果要直线,则应使用Lerp,而不是Slerp

第二,您需要记住您的起始位置,并将其用作第一个参数:

Vector3 startPosition;
float chargeTimer;
float maxCharge;

...

    // where you start your timer
    chargeTimer = 0f;

    startPosition = transform.position;

...

    // where you update your position
    transform.position = Vector3.Slerp(startPosition, pos, (chargeTimer/maxCharge));
© www.soinside.com 2019 - 2024. All rights reserved.