Cities: Skylines

Cities: Skylines

Not enough ratings
(ZH) 如何使用【Back-and-Forth 2 Module [PO]】
By 98ColdDew
我知道这篇指南可能难以理解,您可以只把 Back-and-Forth 2 Module [PO] 作为“BAF module + 旋转控制”使用。这个模块目前实现多段运动的方法(计算和设置延迟时间)很麻烦,但这是一次面向未来的尝试。我将学习如何创建一个关键帧列表(像“Cinematic Camera Extended”模组那样)并且只用一个模块控制它们。
   
Award
Favorite
Favorited
Unfavorite
1 UI
->
第 1 行
【启用:开/关】运动/暂停
【删除模块】删除模块并且移除在当前 PO 上的效果
第 2 行
【1 - 延迟】(游戏在运行状态)PO 在按“开始”键后开始运动的延迟时间(秒)(非负小数)
= 0 : 立即开始
> 0 : n 秒后开始
【N - 延迟】(游戏在运行状态)PO 在完成一次运动后重新开始运动的延迟时间(秒)(小数)
< 0 : 不重新开始
= 0 : 立即重新开始 (适用于“小循环”)
> 0 : n 秒后重新开始 (适用于“大循环”)
(见“3 多段运动(>1 模块)” 章节)
第 3、4 行
【A (按钮)】立即移动 PO 至点 A
【B (按钮)】立即移动 PO 至点 B
【A】   PO 停留于 A 的时间(秒)(非负小数)
【A → B】PO 从 A 到 B 的时间(秒)(非负小数)
【B】   PO 停留于 B 的时间(秒)(非负小数)
【B → A】PO 从 B 到 A 的时间(秒)(非负小数)
第 5 行
【( A → B + B → A ) 次数】一次运动中 A → B 和 B → A 的次数(整数)
< 1 : [1-延迟] + [A→B] + [B] + [B→A] + [A] + [A→B] + [B] + [B→A] + [A] + ... (无数次)
= 1 : [1-延迟] + [A→B]                      (+ [N-延迟] + [第2次运动] + ...)
= 2 : [1-延迟] + [A→B] + [B] + [B→A]              (+ [N-延迟] + [第2次运动] + ...)
= 3 : [1-延迟] + [A→B] + [B] + [B→A] + [A] + [A→B]         (+ [N-延迟] + [第2次运动] + ...)
= 4 : [1-延迟] + [A→B] + [B] + [B→A] + [A] + [A→B] + [B] + [B→A] (+ [N-延迟] + [第2次运动] + ...)
...
第 6 行
【未设置/设置 A】设置点 A 的位置和旋转(方向)
【未设置/设置 B】设置点 B 的位置和旋转(方向)
【开始/返回】开始运动/返回至点 A(仅在设置点 A 和 B 后可用)
第 7、8 行
【速度曲线】PO 单次移动的速度曲线
【→】匀速
【↗↘】从慢到快再慢
【↗】从慢到快
【↘】从快到慢
(见“4 速度曲线” 章节)
【旋转 : +/-/ 】正/反/不 旋转(仅当点 A 和 B 的方向不同时可用)
第 9 行
【编组运动:开/关】
组员也运动并使用相同参数
2 单段运动(1 模块)
【单段运动】表示 PO 由 1 个 BAF2 模块控制并且只能在两点之间移动(单个线段)。

只需给 PO 添加 1 个 BAF2 模块。用户可以像 BAF1 模块一样使用它。

要实现“往返运动”,将【( A → B + B → A ) 次数】从 1 改为 < 1 (0/-1/-2/...) 并且不要忘记改【A】【A → B】【B】【B → A】。

注意:【( A → B + B → A ) 次数】< 1 和 = 2 是不同的:
< 1 : 1-延迟 + (AB + B + BA + A) + (AB + B + BA + A) + ...
= 2 : 1-延迟 + (AB + B + BA) + N-延迟 + (AB + B + BA) + N-延迟 + ...
(A =【A】, B =【B】, AB =【A → B】, BA =【B → A】)

在【单段运动】中, 【1 - 延迟】和【N - 延迟】是不重要的。
如果用户想让 PO 在一次运动中不停留地往返运动,但在两次运动之间停留一段时间,设置【N - 延迟】> 0。
【例】
【1 - 延迟】5   【N - 延迟】10
【A】【A → B】【B】【B → A】
 0    1    0   2
【( A → B + B → A ) 次数】6
单次运动 = AB + BA + AB + BA + AB + BA = 1 + 2 + 1 + 2 + 1 + 2 = 9 (秒)
整个运动 = 1-延迟 + (单次运动) + N-延迟 + (单次运动) + N-延迟 + ...
= 5 + (9) + 10 + (9) + 10 + ...
3 多段运动(>1 模块)
【多段运动】表示 PO 由多于 1 个 BAF2 模块控制并且能沿着一条复杂路径运动(多个线段)。

ABBA=【( A → B + B → A ) 次数】
M1 = 第 1 个 BAF2 模块
M2 = 第 2 个 BAF2 模块
M3 = 第 3 个 BAF2 模块
...
M i = 第 i 个 BAF2 模块
...
M n = 第 n 个 BAF2 模块
【M i】= (AB × ABBA/2+ABBA%2) + (B × ABBA/2) + (BA × ABBA/2) + (A × (ABBA/2+ABBA%2-1)) (第 i 个 BAF2 模块完成一次运动的时间)
【M】=【M1】+【M2】+【M3】+ ... +【M i】+ ... + 【M n】
M i【1 - 延迟】=【M1】+【M2】+【M3】+ ... +【M i-1】
M i【N - 延迟】=【M】-【M i】
【大循环】=【M】+【M】+【M】+ ... (n > 1) (多段运动)
【小循环】=【M1】+【M1】+【M1】+ ... (n = 1)(单段运动)


【例】
这是一个有 3 个点的 2 段运动(a → b → c)。
a = M1 点 A
b = M1 点 B = M2 点 A
c = M2 点 B

M1
【1 - 延迟】0   【N - 延迟】2
【A】【A → B】【B】【B → A】
 0    1    0   0
【( A → B + B → A ) 次数】1
M2
【1 - 延迟】1   【N - 延迟】1
【A】【A → B】【B】【B → A】
 0    2    0   0
【( A → B + B → A ) 次数】1

【M1】= (1 × 1/2+1%2) + (0 × 1/2) + (0 × 1/2) + (0 × (1/2+1%2-1)) = 1
【M2】= (2 × 1/2+1%2) + (0 × 1/2) + (0 × 1/2) + (0 × (1/2+1%2-1)) = 2
【M】= 1 + 2 = 3
M1【1 - 延迟】= 0
M1【N - 延迟】=【M】-【M1】= 3 - 1 = 2
M2【1 - 延迟】=【M1】= 1
M2【N - 延迟】=【M】-【M2】= 3 - 2 = 1
4 速度曲线
   Back-and-Forth 1 x-t      Back-and-Forth 2 x-t
x1 = t                     x1 = t
x2 = 1.063 / (1 + ℯ^(-7 t + 3.4)) - 0.035     x2 = 4t³ (t < 0.5) 1 - 4(1 - t)³ (t > 0.5)
x3 = 1.0135 / (1 + ℯ^(-10 t + 5)) - 0.0067    x3 = t²
                        x4 = 1 - (1 - t)²
   Back-and-Forth 1 v-t      Back-and-Forth 2 v-t
v1 = 1                      v1 = 1
v2 = 7.441ℯ^(-7 t + 3.4) / (ℯ^(-7 t + 3.4) + 1)²  v2 = 12t² (t < 0.5) 12(1 - t)² (t > 0.5)
v3 = 10.135ℯ^(-10 t + 5) / (ℯ^(-10 t + 5) + 1)²  v3 = 2t
                        v4 = 2(1 - t)
2 Comments
梦想的回忆是 6 Mar, 2022 @ 5:57am 
ABBA%2里的%是什么
ArchyTropicoo 28 Oct, 2021 @ 11:35pm 
牛!