میانپردههای دوربین بدون ماد: فریمهای کلیدی، درونیابی و ترفندهای حالت تماشاچی
دو روش برای حرکت دوربین در نسخه وانیلا — تابع تلهپورت مبتنی بر تیک، یا رجیستری تایملاین. کاربرد هرکدام و هموارسازی که جلوی رباتیک به نظر رسیدن آن را میگیرد.
در نسخه وانیلا شیء دوربینی وجود ندارد، بنابراین میانپرده یکی از این دو خطای دید است.
روش ۱: تلهپورت بازیکن در هر تیک
روش قدیمی و همگانی. بازیکن را در حالت تماشاچی قرار دهید، سپس او را در امتداد یک مسیر حرکت دهید:
gamemode spectator @s
tp @s 100.0 70.0 200.0 -90.0 10.0
یک tp per tick from a function chain. It works on every version and needs nothing special. The problems are all about smoothness:
- 20 فریم کلیدی در ثانیه. یک نمای 10 ثانیهای 200
tplines. - گامهای خطی مکانیکی به نظر میرسند. حرکات واقعی دوربین نرم شروع و نرم تمام میشوند.
- چرخش به شکل نامناسبی دور میزند. رفتن از yaw 170 به -170 یک چرخش 20 درجهای است، اما
درونیابی خام 340 درجه در جهت اشتباه میچرخد. اختلاف زاویه را قبل از گام برداشتن به بازه -180…180 نرمالسازی کنید.
تولید این خطوط کاری است که ابزار فریم کلیدی انجام میدهد — شما چند موقعیت قرار میدهید و آن تابع مبتنی بر تیک را همراه با نرمسازی خروجی میدهد.
نرمسازی حرکتی
تفاوت بین کار ناشیانه و حرفهای در منحنی درونیابی است. بین دو فریم کلیدی، با 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.
روش ۲: رجیستری تایملاین
نسخههای جدیدتر فرمت تایملاین را اضافه کردهاند که کل نما را به جای صدها تلهپورت، به شکل داده توصیف میکند:
data/<namespace>/timeline/intro.json
فریمهای کلیدی با زمانبندی و حالتهای درونیابی، اجرا با یک دستور تکی. مزایا:
- بسیار کوچکتر. شش فریم کلیدی به جای دویست تلهپورت.
- درونیابی به صورت درونی و بومی است، بنابراین نیازی به محاسبات ریاضی دستی برای نرمسازی نیست.
- مستقل از نرخ فریم — مانند تلهپورت مبتنی بر تیک روی یک
سرور شلوغ و سنگین، لگ نمیزند.
هزینهاش این است که فقط در نسخههای اخیر وجود دارد، بنابراین مپی که کلاینتهای قدیمیتر را هدف قرار میدهد هنوز به روش ۱ نیاز دارد.
ثابت نگه داشتن بازیکن
هر دو روش با دو مشکل مبارزه میکنند:
- ورودی بازیکن. حالت تماشاچی به بازیکن اجازه میدهد در میانه نما پرواز کند و دور شود. تلهپورت مجدد در هر تیک
آن را لغو میکند، که یکی از دلایل تداوم استفاده از روش مبتنی بر اجبار است.
- لود شدن چانک. دوربینی که به یک جای لودنشده پرواز کند، فضای خالی (void) نشان میدهد.
/forceloadthe path
قبل از نما و حذف آن پس از پایان.
مخفی کردن 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.
فریمهای کلیدی را روی یک مسیر قرار دهید و یک تابع مبتنی بر تیک یا یک JSON تایملاین خروجی بگیرید با ابزارهای ساخت میانپرده و تایملاین.