Mga cutscene ng camera nang walang mod: mga keyframe, interpolation at mga trick sa spectator
Dalawang paraan upang igalaw ang camera sa vanilla — isang tumitiktik na teleport function, o ang timeline registry. Kung saan magaling ang bawat isa, at ang smoothing na pumipigil dito na magmukhang robotiko.
Walang object ng camera sa vanilla, kaya ang isang cutscene ay isa sa dalawang ilusyon.
Paraan 1: i-teleport ang manlalaro bawat tick
Ang lumang, pangkalahatang paraan. Ilagay ang manlalaro sa spectator, pagkatapos ay igalaw sila sa isang daanan:
gamemode spectator @s
tp @s 100.0 70.0 200.0 -90.0 10.0
isa tp per tick from a function chain. It works on every version and needs nothing special. The problems are all about smoothness:
- 20 keyframe bawat segundo. Ang sampung segundong kuha ay 200
tplines. - Mekanikal tingnan ang mga linyar na hakbang. Ang mga totoong galaw ng camera ay nag-i-ease in at out.
- Hindi maayos ang pag-ikot kapag nag-wrap. Ang pagpunta mula sa yaw 170 hanggang -170 ay 20-degree na pag-ikot, ngunit ang simpleng
interpolation ay umiikot ng 340 degrees sa maling direksyon. I-normalize ang pagkakaiba ng anggulo sa saklaw na -180…180 bago humakbang.
Ang pagbuo ng mga linyang iyon ang layunin ng isang tool sa keyframe — maglalagay ka ng ilang posisyon at ilalabas nito ang per-tick function na may inilapat na easing.
Easing
Ang pagkakaiba sa pagitan ng baguhan at mapapanood ay ang interpolation curve. Sa pagitan ng dalawang keyframe, na may t from 0 to 1:
linear t
ease-in-out t < 0.5 ? 2t² : 1 − 2(1−t)²
smoothstep t² × (3 − 2t)
smoothstep is the safe default. Apply it to position and rotation together or the camera arrives before it finishes turning.
Paraan 2: ang timeline registry
Ang mga mas bagong bersyon ay nagdaragdag ng timeline format na naglalarawan sa buong kuha bilang data sa halip na daan-daang mga teleport:
data/<namespace>/timeline/intro.json
Mga keyframe na may mga oras at mode ng interpolation, pinatugtog gamit ang iisang command. Mga bentahe:
- Higit na mas maliit. Anim na keyframe sa halip na dalawandaang teleport.
- Native ang interpolation, kaya walang manu-manong matematika sa easing.
- Hindi nakadepende sa frame-rate — hindi ito nag-i-stutter tulad ng per-tick na teleport sa isang
kargadong server.
Ang kabayaran ay umiiral lamang ito sa mga kamakailang bersyon, kaya ang isang map na nakatuon sa mas lumang mga client ay nangangailangan pa rin ng paraan 1.
Pagpapanatili sa manlalaro sa puwesto
Parehong lumalaban ang dalawang paraan sa dalawang bagay:
- Input ng manlalaro. Hinahayaan ng spectator ang manlalaro na lumipad palayo habang kumukuha. Ang muling pag-teleport bawat tick
ay nangingibabaw dito, na isang dahilan kung bakit nananatili ang paraang brute-force.
- Pagkarga ng chunk. Ang camera na lumilipad sa hindi pa nakakargang lugar ay nagpapakita ng void.
/forceloadthe path
bago ang kuha at alisin ito pagkatapos.
Pagtatago ng HUD
/gamerule doImmediateRespawn, spectator mode and F1 get you most of the way. For a clean frame, a resource pack that blanks the HUD sprites removes the crosshair and hotbar without the player pressing anything — see the HUD guide.
Maglagay ng mga keyframe sa isang path at i-export ang alinman sa per-tick function o isang timeline JSON gamit ang Mga Tagabuo ng Cutscene at Timeline.