Objek bergerak adalah objek yang bergerak di satu atau lebih sumbu dalam ruang 3D. Menggunakan kekuatan bawaan dari mesin simulasi Roblox, Anda dapat membuat objek bergerak dan berinteraksi dengan lingkungan mereka dengan cara yang meniru perilaku fisik dunia nyata yang akrab dan intuitif bagi pemain, seperti gravitasi, aerodinamika, dan gesekan.
Menggunakan file Moving Objects .rbxl sebagai referensi, tutorial ini menjelaskan bagaimana gaya fisik mempengaruhi gerakan linier di Studio, dan menunjukkan berbagai teknik untuk memindahkan objek dari titik A ke titik B dalam permainan Anda dengan perilaku gerakan yang berbeda, termasuk panduan tentang:
- Menggunakan LinearVelocity penghalang pemindah untuk memindahkan seluruh rakitan dengan kecepatan linier konstan.
- Menggunakan PrismaticConstraint untuk membatasi rakitan pada satu sumbu dan memindahkannya dengan kecepatan linier konstan relatif terhadap suatu titik dalam ruang 3D.
- Menggunakan metode ApplyImpulse untuk memindahkan rakitan dengan dorongan awal gaya sehingga rakitan tersebut melambat seiring waktu.
Gerakan linier 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 linier dapat berperilaku dalam permainan, penting untuk memiliki pemahaman tingkat tinggi tentang bagaimana objek bergerak dalam kehidupan nyata dengan gerakan linier.
Gerakan linier adalah pergerakan sepanjang sumbu. Misalnya, ketika sebuah blok memiliki gerakan linier, ia bergerak sepanjang sumbu yang ditentukan.

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

Kecepatan linier adalah ukuran pergerakan objek, atau seberapa cepat objek mengubah posisinya sepanjang sumbu selama periode waktu. Studio mengukur kecepatan linier berdasarkan berapa banyak stud yang objek bergerak per detik. Stud adalah satuan fisik utama Roblox untuk mengukur panjang, dan setiap stud setara dengan sekitar 28cm di dunia nyata.

Memahami kecepatan linier penting untuk merancang gameplay karena membantu Anda menentukan seberapa banyak gaya yang Anda butuhkan untuk mencapai kecepatan tertentu untuk objek bergerak Anda. 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 dengan akurat.
Bagian berikut menyelami lebih dalam ke dalam konsep-konsep ini saat Anda belajar bagaimana memindahkan objek baik dengan kecepatan linier konstan atau awal dengan gaya yang diperlukan untuk mengatasi gaya fisik oposisi dalam lingkungan. Saat Anda meninjau konsep fisika ini dengan teknik yang akan datang, Anda dapat lebih akurat memprediksi bagaimana menyesuaikan nilai properti untuk mencapai perilaku gerakan linier ideal di Studio.
Pertahankan kecepatan linier konstan
Agar sebuah objek mencapai dan mempertahankan kecepatan linier konstan, ia memerlukan gaya untuk mengatasi gaya fisik oposisi yang memperlambat kecepatan linier objek, atau menyebabkan objek tetap diam. Misalnya, jika Anda ingin objek memiliki kecepatan linier [0, 12, 0] di Studio, Anda perlu cukup gaya agar objek mencapai dan mempertahankan 12 stud per detik sepanjang sumbu Y di lingkungannya.
Jumlah gaya yang diperlukan tidak hanya tergantung pada gaya fisik oposisi 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 linier yang sama.
Subbagian berikut menggunakan rakitan dari berbagai bentuk dan ukuran untuk mengajarkan Anda bagaimana memindahkan baik seluruh objek atau hanya sebagian dari objek dengan kecepatan linier konstan. Saat Anda bereksperimen dengan nilai properti yang berbeda, Anda akan belajar bagaimana memperkirakan jumlah maksimum gaya yang Anda butuhkan untuk rakitan dalam permainan Anda sendiri.
Gunakan batas LinearVelocity
Objek LinearVelocity adalah jenis penghalang pemindah yang menerapkan gaya pada seluruh rakitan untuk mempertahankan kecepatan linier konstan. Dengan tidak mengunci posisi rakitan pada sumbu selama gerakannya, rakitan tersebut bebas untuk berputar saat bertabrakan dengan objek lain dalam ruang 3D. Jenis gerakan ini menghasilkan skenario gameplay yang mengejutkan yang lebih sulit diprediksi oleh pemain.
Untuk mulai memindahkan rakitan, batas LinearVelocity perlu mengetahui:
- Titik dan arah positif atau negatif untuk menerapkan gaya.
- Jumlah stud yang ingin Anda rakitan bergerak per detik.
- Jumlah maksimum gaya yang dapat diterapkan mesin agar rakitan mencapai kecepatan linier konstan.
Untuk mendemonstrasikan proses ini, Anda akan mengonfigurasi sebuah daun teratai dengan sebuah lampiran yang dirujuk oleh batas LinearVelocity untuk memindahkan daun teratai 15 stud per detik sepanjang sumbu X negatif dunia dengan kecepatan linier konstan.

Tambahkan lampiran
Anda dapat menentukan titik untuk menerapkan gaya dengan menambahkan objek Attachment ke rakitan, kemudian mengonfigurasi posisi lampiran dalam ruang 3D. Permainan contoh Moving Objects menempatkan lampiran di tengah daun teratai sehingga batas dapat memindahkan mesh dari lampiran sepanjang sumbu tertentu.
Lampiran menyertakan bantuan visual untuk membantu Anda memvisualisasikan sumbu gerakan mereka. Panah kuning menunjukkan sumbu utama lampiran, dan panah oranye menunjukkan sumbu sekunder lampiran. Meskipun tidak ada sumbu gerakan yang mempengaruhi gerakan daun teratai dalam langkah teknik ini, penting untuk memahami bantuan visual ini untuk referensi di masa depan karena mereka dapat membantu Anda menentukan perilaku ideal untuk berbagai jenis batas, seperti PrismaticConstraint dalam teknik berikutnya.

Untuk menambahkan lampiran:
Di jendela Explorer, perluas folder LinearVelocityExample, lalu perluas model anaknya LilyPad_DIY.
Masukkan lampiran ke dalam mesh Pad.
- Arahkan kursor ke mesh dan klik tombol ⊕. Menu kontekstual ditampilkan.
- Dari menu, masukkan Attachment. Lampiran ditampilkan di tengah bagian.
- Ganti nama lampiran menjadi MoveAttachment.

Konfigurasi batas
Sekarang setelah mesh Anda memiliki titik tetap untuk memindahkan daun teratai, Anda dapat mengonfigurasi properti batas LinearVelocity untuk menentukan arah dan magnitudo untuk kecepatan linier konstan, jumlah stud yang ingin Anda rakitan bergerak per detik, dan jumlah maksimum gaya yang dapat diterapkan mesin agar mesh mencapai kecepatan linier konstan.
Permainan contoh Moving Objects menerapkan hingga 5000 Rowton gaya konstan untuk memindahkan daun teratai 15 stud per detik sepanjang sumbu X negatif dunia dengan kecepatan linier konstan. Rowton adalah satuan fisik utama Roblox untuk mengukur gaya. Untuk merujuk satuan fisik Roblox dan bagaimana mereka dikonversi ke satuan metrik, lihat Roblox Units.
Untuk mengonfigurasi batas LinearVelocity:
Agar batas terlihat di viewport sehingga Anda dapat merujuk arah linernya, aktifkan Show Constraint Details dari menu View Studio.
Masukkan batas LinearVelocity ke dalam mesh Pad.
- Di jendela Explorer, arahkan kursor ke mesh, lalu klik ikon ⊕. Menu kontekstual ditampilkan.
- Dari menu kontekstual, masukkan LinearVelocity.
Tetapkan lampiran mesh ke batas baru.
- Di jendela Explorer, pilih batas.
- Di jendela Properties,
- Atur Attachment0 ke MoveAttachment.
- Atur MaxForce ke 5000 untuk menerapkan hingga 5000 Rowton gaya konstan untuk mencapai kecepatan linier target.
- Biarkan RelativeTo ke World untuk memindahkan daun teratai relatif terhadap posisi dan orientasi dunia.
- Atur VelocityConstraint ke Line untuk membatasi gaya sepanjang garis dari lampiran.
- Atur LineDirection ke -1, 0, 0 untuk memindahkan daun teratai sepanjang sumbu X negatif dunia. Perhatikan bahwa jika Anda mengatur properti ini ke 1, 0, 0, daun teratai akan bergerak sepanjang sumbu X positif dunia.
- Atur LineVelocity ke 15 untuk memindahkan daun teratai 15 stud per detik.

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

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

Konfigurasi lampitan
Anda dapat menentukan arah untuk memindahkan objek tertentu dalam rakitan dengan menambahkan dua objek Attachment ke rakitan, kemudian mengonfigurasi penyelarasan dan orientasi mereka dalam ruang 3D. Permainan contoh Moving Objects menyelaraskan dua lampitan sepanjang sumbu X dunia dekat posisi di mana kayu yang tidak terikat tumpang tindih dengan bagian yang terikat, dan mengorientasikan sumbu utama setiap lampitan untuk menghadap sumbu X negatif dunia.
Ketika Anda mengonfigurasi batas PrismaticConstraint Anda di bagian berikut, itu akan memindahkan kayu sehubungan dengan bagian pengikat. Dengan kata lain, kayu akan bergerak menjauh dari bagian yang diam yang tidak dapat bergerak karena terikat dalam ruang 3D.
Untuk mengonfigurasi lampitan untuk batas prismatic:
Di jendela Explorer, perluas folder PrismaticConstraintExample, lalu perluas model anaknya Log_DIY.
Masukkan lampitan ke dalam mesh Log.
- Arahkan kursor ke mesh dan klik tombol ⊕. Menu kontekstual ditampilkan.
- Dari menu, masukkan Attachment. Lampitan ditampilkan di tengah bagian.
- Ganti nama lampitan menjadi LogAttachment.

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

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

Posisikan kembali AnchorAttachment sehingga kedua lampitan sejajar pada sumbu X dunia.

Konfigurasi batas
Sekarang setelah lampitan Anda sejajar pada sumbu yang sama dan menghadap arah yang sama yang Anda inginkan agar kayu bergerak, Anda dapat mengonfigurasi properti batas PrismaticConstraint untuk menentukan apakah akan menerapkan kecepatan linier konstan target dalam arah positif atau negatif dari sumbu utama setiap lampitan, jumlah stud yang ingin Anda lampitan bergerak per detik, dan jumlah maksimum gaya yang dapat diterapkan mesin agar kayu mencapai kecepatan linier konstan.
Sementara Anda dapat memilih nilai yang berbeda untuk kasus penggunaan Anda sendiri, permainan contoh Moving Objects menerapkan hingga 50000 Rowton gaya konstan untuk memindahkan lampitan 40 radian per detik sepanjang sumbu X negatif dunia dengan kecepatan linier konstan. Namun, karena lampitan pengikat berada dalam objek yang terikat, hanya lampitan kayu yang dapat bergerak.
Untuk mengonfigurasi batas prismatic:
Masukkan objek PrismaticConstraint ke dalam mesh Log.
- Di jendela Explorer, arahkan kursor ke mesh, lalu klik ikon ⊕. Menu kontekstual ditampilkan.
- Dari menu kontekstual, masukkan PrismaticConstraint.
Tetapkan lampitan kayu ke batas baru sehingga kayu bergerak sehubungan dengan bagian blok yang terikat.
- Di jendela Explorer, pilih batas.
- Di jendela Properties,
- Atur Attachment0 ke AnchorAttachment.
- Atur Attachment1 ke LogAttachment. Batas ditampilkan di viewport.

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

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

Terapkan gaya linier awal
Cara lain untuk mengubah kecepatan linier objek adalah dengan menerapkan dorongan gaya. Setelah dorongan gaya, objek akan melambat hingga menjadi diam jika ada gaya oposisi seperti gesekan, atau tetap bergerak dengan kecepatan linier konstan jika tidak ada gaya oposisi.
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, subbagian berikut mengajarkan Anda bagaimana meluncurkan karakter pemain ke atas menuju langit ketika mereka bertabrakan dengan peluncur dengan dorongan awal yang dapat Anda sesuaikan dengan nilai baru untuk memenuhi kebutuhan gameplay Anda sendiri.
Gunakan ApplyImpulse
Metode ApplyImpulse menerapkan gaya pada seluruh rakitan untuk mendapatkan kecepatan linier awal sebelum melambat hingga berhenti ketika ada gaya oposisi. Untuk mulai memindahkan rakitan, metode ini perlu mengetahui:
- Rakitan yang akan dipindahkan.
- Sumbu untuk menerapkan gaya untuk mencapai kecepatan linier awal.
- Jumlah gaya yang akan diterapkan pada setiap sumbu.
Anda dapat mendefinisikan semua nilai ini dalam skrip. Misalnya, skrip contoh mendefinisikan rakitan yang akan dipindahkan sebagai objek Humanoid 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 jumlah massa yang berbeda, jadi Anda mungkin perlu meningkatkan dan menyeimbangkan gaya ini untuk meluncurkan setiap pemain tanpa meluncurkan karakter pemain dengan massa yang lebih kecil terlalu tinggi.
Untuk memindahkan rakitan menggunakan ApplyImpulse:
Di jendela Explorer, perluas folder ApplyImpulseExample, lalu perluas model anaknya JumpPad_DIY.
Masukkan skrip ke dalam bagian JumpPad.
- Arahkan kursor ke bagian dan klik tombol ⊕. Menu kontekstual ditampilkan.
- Dari menu, masukkan Script. Lampiran 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)