3 回答

TA贡献1828条经验 获得超13个赞
如果你有两个栅栏柱并且在它们之间放了 k 个栅栏柱,你就创建了 k + 1 个空间。例如:
| |
post1 post2
adding one posts creates two spaces
| | |
post1 post2
如果您希望那些 k + 1 个空间相等,您可以将总距离除以 k + 1 以获得相邻帖子之间的距离。
d = 22 - 4 = 18
k = 8
e = d / (k + 1) = 18 / 9 = 2
在您的其他案例中,答案是
d = 532 - 5 = 527
k = 12
e = d / (k + 1) = 527 / 13 ~ 40.5

TA贡献1840条经验 获得超5个赞
我犹豫是否要给出两个不同的答案,但我觉得这种方法与另一种方法相比非常独特。有一个有用的函数,它可能正是您所需要的,它被恰当地称为Mathf.Lerp()
。
var start = 5;
var end = 532;
var steps = 13;
for (int i = 0; i <= steps; i++) {
// The type conversion is necessary because both i and steps are integers
var value = Mathf.Lerp(start, end, i / (float)steps);
Debug.Log(value);
}

TA贡献1752条经验 获得超4个赞
要实际进行线性插值,请使用Mathf.MoveTowards()
.
为了计算出您的最大增量(即您希望它每一步移动的量),取差值,然后将其除以所需的步数。
var start = 4;
var end = 22;
var distance = end - start;
var steps = 9; // Your example technically has 9 steps, not 8
var delta = distance / steps;
请注意,这很方便地假设您distance是steps. 如果您不知道是这种情况,并且永远不要超过该步数很重要,您可能需要明确检查它。这是一个整数的粗略示例。浮点方法可能更复杂:
if (distance % delta > 0) { delta += 1; }
- 3 回答
- 0 关注
- 128 浏览
添加回答
举报