Objek yang bergerak adalah objek yang bergerak pada satu atau lebih sumbu dalam ruang 3D. Dengan memanfaatkan kekuatan bawaan dari mesin simulasi Roblox, Anda dapat membuat objek bergerak dan berinteraksi dengan lingkungannya sedemikian rupa sehingga meniru perilaku fisik dunia nyata yang akrab dan intuitif bagi pemain, seperti gravitasi, aerodinamika, dan gesekan.
Dengan menggunakan file Moving Objects .rbxl sebagai referensi, tutorial ini menjelaskan bagaimana gaya fisik mempengaruhi gerakan linear di Studio, dan menunjukkan berbagai teknik untuk memindahkan objek dari titik A ke titik B dalam pengalaman Anda dengan berbagai perilaku pergerakan, termasuk panduan tentang:
- Menggunakan LinearVelocity mover constraint untuk memindahkan seluruh assembly dengan kecepatan linear konstan.
- Menggunakan PrismaticConstraint untuk membatasi assembly pada satu sumbu dan memindahkannya dengan kecepatan linear konstan relatif terhadap titik dalam ruang 3D.
- Menggunakan metode ApplyImpulse untuk memindahkan assembly dengan dorongan awal gaya sehingga assembly melambat seiring waktu.
Gerakan linear dan gaya fisik
Roblox Studio adalah mesin simulasi dunia nyata yang meniru perilaku fisik secara real time, jadi untuk memprediksi bagaimana objek yang bergerak secara linear dapat berperilaku dalam pengalaman, penting untuk memiliki pemahaman tingkat tinggi tentang bagaimana objek bergerak di dunia nyata dengan gerakan linear.
Gerakan linear adalah pergerakan di sepanjang sumbu. Misalnya, ketika sebuah balok memiliki gerakan linear, ia bergerak di sepanjang sumbu tertentu.

Gerakan linear tidak dapat ada tanpa gaya fisik eksternal yang mendorong atau menarik objek untuk bergerak. Menurut hukum pertama Newton, objek yang diam tetap diam dan objek yang bergerak tetap bergerak dengan kecepatan konstan kecuali jika mereka dipengaruhi oleh gaya eksternal. Misalnya, sebuah balok yang diam tetap diam kecuali gaya fisik seperti angin mendorongnya untuk bergerak.
Gaya adalah ukuran arah dan besar gaya dorong atau tarik fisik yang menyebabkan objek mengubah kecepatan linear mereka di sepanjang sumbu. Perubahan kecepatan dikenal sebagai percepatan. Konsep ini sangat penting untuk objek agar dapat bergerak di Studio; semakin banyak gaya yang Anda terapkan pada objek, semakin cepat mereka berakselerasi.
Ini karena gaya harus lebih besar daripada gaya fisik lainnya yang menahan objek, seperti gravitasi atau gesekan. Misalnya, jika Anda meletakkan balok di atas pelat logam, gaya fisik angin harus mengatasi jumlah gesekan dari pelat logam untuk terus mengakselerasi balok tersebut. Jika gaya angin tidak jauh lebih besar daripada gesekan dari pelat logam, balok akan mengakselerasi, hanya saja lebih lambat daripada contoh sebelumnya.

Kecepatan linear adalah ukuran gerakan objek, atau seberapa cepat objek mengubah posisinya di sepanjang sumbu dalam jangka waktu tertentu. Studio mengukur kecepatan linear berdasarkan berapa banyak stud yang objek gerakkan per detik. Stud adalah unit fisik utama Roblox untuk mengukur panjang, dan setiap stud setara dengan sekitar 28cm di dunia nyata.

Memahami kecepatan linear sangat penting untuk merancang gameplay dalam pengalaman Anda karena ini membantu Anda menentukan seberapa banyak gaya yang Anda butuhkan untuk mencapai kecepatan tertentu untuk objek yang bergerak. Misalnya, ketika Anda ingin mendorong objek ke atas, penting untuk mempertimbangkan bagaimana Anda harus menyesuaikan gaya Anda untuk mengatasi gravitasi dalam lingkungan sehingga objek bergerak secara akurat.
Bagian berikut menyelami lebih dalam ke dalam konsep-konsep ini saat Anda belajar bagaimana memindahkan objek pada kecepatan linear konstan atau awal dengan gaya yang diperlukan untuk mengatasi setiap gaya fisik yang berlawanan dalam lingkungan. Saat Anda meninjau konsep fisika ini dengan teknik yang akan datang, Anda dapat memprediksi dengan lebih akurat bagaimana cara menyesuaikan nilai properti untuk mencapai perilaku gerakan linear ideal dalam Studio.
Mempertahankan kecepatan linear konstan
Agar sebuah objek mencapai dan mempertahankan kecepatan linear konstan, objek tersebut memerlukan gaya untuk mengatasi setiap gaya fisik yang berlawanan yang memperlambat kecepatan linear objek atau membuat objek tetap diam. Misalnya, jika Anda ingin objek memiliki kecepatan linear [0, 12, 0] di Studio, Anda memerlukan gaya yang cukup agar objek dapat mencapai dan mempertahankan 12 stud per detik di sepanjang sumbu Y dalam lingkungannya.
Jumlah gaya yang diperlukan tidak hanya bergantung pada gaya fisik berlawanan dalam lingkungan itu sendiri, seperti gravitasi dan gesekan, tetapi juga pada objek itu sendiri. Misalnya, jika Anda memiliki dua objek dengan bentuk yang sama yang bergerak di sumbu yang sama, objek dengan massa yang lebih besar memerlukan lebih banyak gaya untuk mencapai percepatan linear yang sama.
Sub-bagian berikut menggunakan assembly dengan bentuk dan ukuran yang berbeda untuk mengajarkan Anda bagaimana memindahkan baik keseluruhan objek atau hanya sebagian dari objek tersebut pada kecepatan linear konstan. Saat Anda bereksperimen dengan nilai properti yang berbeda, Anda akan belajar bagaimana memperkirakan jumlah gaya maksimum yang Anda butuhkan untuk assembly dalam pengalaman Anda sendiri.
Gunakan batas LinearVelocity
Objek LinearVelocity adalah jenis mover constraint yang menerapkan gaya pada seluruh assembly untuk mempertahankan kecepatan linear konstan. Dengan tidak mengunci posisi assembly pada sumbu selama pergerakannya, assembly dapat berputar saat berbenturan dengan objek lain dalam ruang 3D. Jenis pergerakan ini menghasilkan skenario gameplay yang mengejutkan yang lebih sulit diprediksi oleh pemain.
Untuk mulai memindahkan assembly, batas LinearVelocity perlu mengetahui:
- Titik dan arah positif atau negatif untuk menerapkan gaya.
- Jumlah stud yang ingin Anda buat agar assembly bergerak per detik.
- Jumlah maksimum gaya yang dapat diterapkan mesin agar assembly mencapai kecepatan linear konstan.
Untuk mendemonstrasikan proses ini, Anda akan mengonfigurasi daun teratai dengan attachment yang dirujuk oleh batas LinearVelocity untuk memindahkan daun teratai 15 stud per detik di sepanjang sumbu X negatif dunia dengan kecepatan linear konstan.

Tambahkan attachment
Anda dapat menentukan titik untuk menerapkan gaya dengan menambahkan objek Attachment ke assembly, kemudian mengonfigurasi posisi attachment di ruang 3D. Pengalaman contoh Moving Objects memasang attachment di tengah daun teratai agar batas dapat memindahkan mesh dari attachment sepanjang sumbu tertentu.
Attachment mencakup bantuan visual untuk membantu Anda memvisualisasikan sumbu gerak mereka. Panah kuning menunjukkan sumbu utama attachment, dan panah oranye menunjukkan sumbu sekunder attachment. Meskipun tidak ada sumbu gerak yang mempengaruhi pergerakan daun teratai dalam langkah teknik ini, penting untuk memahami bantuan visual ini untuk referensi di masa depan karena dapat membantu Anda menentukan perilaku ideal untuk berbagai jenis batas, seperti PrismaticConstraint dalam teknik berikut.

Untuk menambahkan sebuah attachment:
Di jendela Explorer, perluas folder LinearVelocityExample, kemudian perluas model anaknya LilyPad_DIY.
Masukkan attachment ke dalam mesh Pad.
- Arahkan mouse Anda ke mesh dan klik tombol ⊕. Menu konteks akan muncul.
- Dari menu, masukkan Attachment. Attachment akan ditampilkan di tengah bagian.
- Ganti nama attachment menjadi MoveAttachment.

Konfigurasikan batas
Sekarang setelah mesh Anda memiliki titik tetap untuk memindahkan daun teratai, Anda dapat mengonfigurasi properti batas LinearVelocity untuk menentukan arah dan besar kecepatan linear konstan, jumlah stud yang ingin Anda buat agar mesh bergerak per detik, dan jumlah maksimum gaya yang dapat diterapkan mesin agar mesh mencapai kecepatan linear konstan.
Pengalaman contoh Moving Objects menerapkan gaya konstan hingga 5000 Rowtons untuk memindahkan daun teratai 15 stud per detik di sepanjang sumbu X negatif dunia pada kecepatan linear konstan. Rowtons adalah unit fisik utama Roblox untuk mengukur gaya. Untuk merujuk pada unit fisik Roblox dan bagaimana mereka dikonversi menjadi unit metrik, lihat Roblox Units.
Untuk mengonfigurasi batas LinearVelocity:
Agar batas terlihat di viewport sehingga Anda dapat merujuk pada arah liniernya, aktifkan Tampilkan Detail Batas dari menu Tampilan di Studio.
Masukkan batas LinearVelocity ke dalam mesh Pad.
- Di jendela Explorer, arahkan mouse ke mesh, kemudian klik ikon ⊕. Menu konteks akan muncul.
- Dari menu konteks, masukkan LinearVelocity.
Tetapkan attachment mesh ke batas baru.
- Di jendela Explorer, pilih batas.
- Di jendela Properties,
- Atur Attachment0 ke MoveAttachment.
- Atur MaxForce ke 5000 untuk menerapkan hingga 5000 Rowtons gaya konstan untuk mencapai kecepatan linear target.
- Biarkan RelativeTo menjadi World untuk memindahkan daun teratai relatif terhadap posisi dan orientasi dunia.
- Atur VelocityConstraint ke Line untuk membatasi gaya sepanjang garis dari attachment.
- Atur LineDirection ke -1, 0, 0 untuk memindahkan daun teratai di sepanjang sumbu X negatif dunia. Perhatikan bahwa jika Anda mengatur properti ini ke 1, 0, 0, daun teratai akan bergerak di sepanjang sumbu X positif dunia.
- Atur LineVelocity ke 15 untuk memindahkan daun teratai 15 stud per detik.

Verifikasi bahwa jumlah gaya yang Anda tetapkan memindahkan mesh 15 stud per detik di sepanjang sumbu X negatif dunia.
Pilih mode simulasi Run dari menu dropdown mezzanine dan klik tombol Play untuk memulai. Studio mensimulasikan pengalaman pada posisi kamera saat ini tanpa avatar Anda dalam ruang 3D.

Gunakan batas PrismaticConstraint
Objek PrismaticConstraint adalah jenis batas mekanis yang membuat sambungan kaku antara dua attachment, memungkinkan assembly induknya bergerak di sepanjang satu sumbu relatif satu sama lain. Dengan mengunci posisi kedua assembly pada satu sumbu, setiap assembly hanya dapat berputar jika mereka berputar bersama dalam arah yang sama.
Jenis pergerakan ini menghasilkan skenario gameplay yang stabil yang lebih mudah untuk diprediksi oleh pemain. Misalnya, pengalaman contoh Moving Objects menggunakan objek PrismaticConstraint untuk memindahkan platform log yang dapat digunakan pemain untuk menyeberangi sungai raksasa dengan hati-hati.
Saat Anda mengatur PrismaticConstraint.ActuatorType ke Motor, batas ini menerapkan gaya pada dua attachment dengan tujuan agar attachment mencapai dan mempertahankan kecepatan linear konstan. Jika Anda mengunci assembly induk dari satu attachment, gaya tersebut terus memindahkan assembly yang tidak terikat dengan kecepatan linear konstan sementara assembly yang terikat tetap diam.
Untuk mulai memindahkan assembly, batas PrismaticConstraint perlu mengetahui:
- Titik dan arah positif atau negatif untuk menerapkan gaya.
- Jumlah stud yang ingin Anda buat agar attachment bergerak per detik.
- Jumlah maksimum gaya yang dapat diterapkan mesin agar attachment dan assembly induknya mencapai kecepatan linear konstan.
Untuk mendemonstrasikan proses ini, Anda akan mengonfigurasi assembly log dengan dua objek yang memiliki attachment anak yang dirujuk oleh PrismaticConstraint untuk memindahkan log 40 stud per detik di sepanjang sumbu X negatif dunia pada kecepatan linear konstan.

Konfigurasikan attachment
Anda dapat menentukan arah untuk memindahkan objek tertentu dalam assembly dengan menambahkan dua objek Attachment ke assembly, kemudian mengonfigurasi keselarasan dan orientasi mereka dalam ruang 3D. Pengalaman contoh Moving Objects menyelaraskan dua attachment di sepanjang sumbu X dunia dekat posisi di mana log yang tidak terikat tumpang tindih dengan bagian yang terikat, dan mengorientasikan sumbu utama setiap attachment agar menghadap ke sumbu X negatif dunia.
Saat Anda mengonfigurasi batas PrismaticConstraint Anda pada bagian berikut, itu akan memindahkan log dalam kaitan dengan bagian yang tertambat. Dengan kata lain, log akan bergerak menjauh dari bagian stasioner yang tidak dapat bergerak karena terikat dalam ruang 3D.
Untuk mengonfigurasi attachment untuk batas prismatic:
Di jendela Explorer, perluas folder PrismaticConstraintExample, kemudian perluas model anaknya Log_DIY.
Masukkan sebuah attachment ke dalam mesh Log.
- Arahkan mouse ke mesh dan klik tombol ⊕. Menu konteks akan muncul.
- Dari menu, masukkan Attachment. Attachment akan ditampilkan di tengah bagian.
- Ganti nama attachment menjadi LogAttachment.

Menggunakan proses yang sama, masukkan attachment ke dalam bagian Anchor, lalu ganti nama attachment menjadi AnchorAttachment.

Menggunakan alat View Selector sebagai referensi untuk koordinat dunia, putar LogAttachment dan AnchorAttachment hingga sumbu utama setiap attachment menghadap ke sumbu X negatif dunia.

Pindahkan AnchorAttachment sehingga kedua attachment diselaraskan pada sumbu X dunia.

Konfigurasikan batas
Sekarang setelah attachment Anda diselaraskan pada sumbu yang sama dan menghadap arah yang sama yang Anda inginkan agar log bergerak, Anda dapat mengonfigurasi properti batas PrismaticConstraint untuk menentukan apakah menerapkan kecepatan linear konstan target di arah positif atau negatif dari sumbu utama setiap attachment, jumlah stud yang ingin Anda buat agar attachment bergerak per detik, dan jumlah maksimum gaya yang dapat diterapkan mesin agar log mencapai kecepatan linear konstan.
Meskipun Anda dapat memilih nilai yang berbeda untuk kasus penggunaan Anda sendiri, pengalaman contoh Moving Objects menerapkan gaya konstan hingga 50000 Rowtons untuk memindahkan attachment 40 radian per detik di sepanjang sumbu X negatif dunia pada kecepatan linear konstan. Namun, karena attachment anchor berada pada objek yang terikat, hanya attachment log yang bisa bergerak.
Untuk mengonfigurasi batas prismatic:
Masukkan objek PrismaticConstraint ke dalam mesh Log.
- Di jendela Explorer, arahkan mouse ke mesh, kemudian klik ikon ⊕. Menu konteks akan muncul.
- Dari menu konteks, masukkan PrismaticConstraint.
Tetapkan attachment log ke batas baru sehingga log bergerak dalam kaitan dengan bagian blok yang terikat.
- Di jendela Explorer, pilih batas.
- Di jendela Properties,
- Atur Attachment0 ke AnchorAttachment.
- Atur Attachment1 ke LogAttachment. Batas akan ditampilkan di viewport.

Di jendela Explorer, pilih batas, lalu di jendela Properties:
- Atur ActuatorType ke Motor. Bidang properti baru akan ditampilkan.
- Atur MotorMaxForce ke 50000 untuk menerapkan hingga 50000 Rowtons gaya konstan untuk mencapai kecepatan linear target.
- Atur Velocity ke 40 untuk memindahkan log 40 stud per detik.

Verifikasi bahwa jumlah gaya yang Anda tetapkan memindahkan log 40 stud per detik di sepanjang sumbu X negatif dunia.
Pilih mode simulasi Run dari menu dropdown mezzanine dan klik tombol Play untuk memulai. Studio mensimulasikan pengalaman pada posisi kamera saat ini tanpa avatar Anda dalam ruang 3D.

Menerapkan gaya linear awal
Cara lain untuk mengubah kecepatan linear objek adalah dengan menerapkan dorongan gaya. Setelah dorongan gaya, objek tersebut baik melambat hingga menjadi diam jika ada gaya berlawanan seperti gesekan, atau tetap bergerak dengan kecepatan linear konstan jika tidak ada gaya berlawanan.
Teknik ini berguna untuk memindahkan objek setelah peristiwa gameplay yang signifikan, seperti ledakan atau tabrakan yang berdampak, karena memberikan umpan balik instan kepada pemain. Untuk mendemonstrasikan, sub-bagian berikut akan mengajarkan Anda bagaimana meluncurkan karakter pemain ke atas menuju langit ketika mereka bertabrakan dengan pad loncat dengan dorongan awal yang dapat Anda sesuaikan dengan nilai baru untuk memenuhi kebutuhan gameplay Anda sendiri.
Gunakan ApplyImpulse
Metode ApplyImpulse menerapkan gaya pada seluruh assembly untuk mendapatkan kecepatan linear awal sebelum melambat hingga berhenti ketika ada gaya berlawanan. Untuk mulai memindahkan assembly, metode ini perlu mengetahui:
- Assembly yang akan dipindahkan.
- Sumbu untuk menerapkan gaya untuk mencapai kecepatan linear awal.
- Jumlah gaya yang diterapkan ke setiap sumbu.
Anda dapat mendefinisikan semua nilai ini dalam sebuah skrip. Misalnya, skrip contoh mendefinisikan assembly yang akan dipindahkan sebagai objek Humanoid dari karakter pemain, kemudian menerapkan dorongan gaya sebesar 2500 Rowton-detik untuk meluncurkan pemain ke atas pada sumbu Y positif dunia. Perhatikan bahwa karakter pemain memiliki massa yang berbeda, jadi Anda mungkin perlu meningkatkan dan menyeimbangkan gaya ini untuk meluncurkan setiap pemain tanpa meluncurkan karakter pemain dengan jumlah massa yang lebih kecil terlalu tinggi.
Untuk memindahkan sebuah assembly menggunakan ApplyImpulse:
Di jendela Explorer, perluas folder ApplyImpulseExample, kemudian perluas model anaknya JumpPad_DIY.
Masukkan skrip ke dalam bagian JumpPad.
- Arahkan mouse ke bagian tersebut dan klik tombol ⊕. Menu konteks akan muncul.
- Dari menu, masukkan Script. Attachment akan ditampilkan di tengah bagian.
- Ganti nama skrip menjadi JumpScript.
Ganti kode default dengan kode berikut:
local volume = script.Parentlocal function onTouched(other)local impulse = Vector3.new(0, 2500, 0)local character = other.Parentlocal humanoid = character:FindFirstChildWhichIsA("Humanoid")if humanoid and other.Name == "LeftFoot" thenother:ApplyImpulse(impulse)endendvolume.Touched:Connect(onTouched)