Đối tượng di chuyển là các đối tượng di chuyển trên một hoặc nhiều trục trong không gian 3D. Sử dụng sức mạnh tích hợp của động cơ mô phỏng Roblox, bạn có thể làm cho các đối tượng di chuyển và tương tác với môi trường của chúng theo cách mô phỏng hành vi vật lý thực tế mà người chơi quen thuộc và dễ hiểu, chẳng hạn như trọng lực, khí động học và ma sát.
Sử dụng tệp Đối tượng Di chuyển .rbxl làm tài liệu tham khảo, hướng dẫn này giải thích cách các lực vật lý ảnh hưởng đến chuyển động thẳng trong Studio, và cho bạn thấy nhiều kỹ thuật khác nhau để di chuyển các đối tượng từ điểm A đến điểm B trong trò chơi của bạn với các hành vi di chuyển khác nhau, bao gồm hướng dẫn về:
- Sử dụng ràng buộc LinearVelocity để di chuyển toàn bộ lắp ráp với vận tốc thẳng không đổi.
- Sử dụng PrismaticConstraint để ràng buộc một lắp ráp vào một trục duy nhất và di chuyển nó với vận tốc thẳng không đổi tương đối với một điểm trong không gian 3D.
- Sử dụng phương thức ApplyImpulse để di chuyển một lắp ráp với một xung lực ban đầu để lắp ráp giảm tốc từ từ theo thời gian.
Chuyển động thẳng và các lực vật lý
Roblox Studio là một động cơ mô phỏng thế giới thực mô phỏng hành vi vật lý theo thời gian thực, vì vậy để dự đoán cách các đối tượng di chuyển thẳng có thể hoạt động trong trò chơi, điều quan trọng là có một hiểu biết tổng quát về cách các đối tượng di chuyển trong đời thực với chuyển động thẳng.
Chuyển động thẳng là chuyển động dọc theo một trục. Ví dụ, khi một khối có chuyển động thẳng, nó di chuyển dọc theo một trục đã xác định.

Chuyển động thẳng không thể tồn tại mà không có các lực vật lý bên ngoài đẩy hoặc kéo các đối tượng để di chuyển. Theo định luật chuyển động thứ nhất của Newton, các đối tượng đứng yên vẫn đứng yên và các đối tượng đang di chuyển vẫn tiếp tục chuyển động với vận tốc không đổi trừ khi chúng bị tác động bởi một lực bên ngoài. Ví dụ, một khối đứng yên vẫn đứng yên trừ khi một lực vật lý như gió đẩy nó di chuyển.
Lực là thước đo hướng và độ lớn của một lực vật lý đẩy hoặc kéo khiến các đối tượng thay đổi vận tốc thẳng của chúng dọc theo một trục. Một sự thay đổi trong vận tốc được gọi là gia tốc. Khái niệm này đặc biệt quan trọng để các đối tượng di chuyển trong Studio; càng nhiều lực bạn áp dụng lên các đối tượng, chúng càng gia tốc nhanh hơn.
Điều này là do lực cần phải lớn hơn bất kỳ lực vật lý nào đẩy ngược lại đối tượng, chẳng hạn như trọng lực hoặc ma sát. Ví dụ, nếu bạn đặt khối lên một tấm kim loại, lực vật lý của gió cần phải vượt qua lượng ma sát từ tấm kim loại để tiếp tục gia tốc khối. Nếu lực của gió không lớn hơn nhiều so với ma sát từ tấm kim loại, khối sẽ gia tốc, chỉ là chậm hơn so với ví dụ trước.

Vận tốc thẳng là thước đo chuyển động của một đối tượng, hoặc tốc độ mà đối tượng thay đổi vị trí của nó dọc theo một trục trong một khoảng thời gian. Studio đo vận tốc thẳng theo số lượng studs mà một đối tượng di chuyển mỗi giây. Studs là đơn vị vật lý chính của Roblox để đo chiều dài, và mỗi stud tương đương với khoảng 28cm trong thế giới thực.

Hiểu vận tốc thẳng là điều quan trọng để thiết kế gameplay vì nó giúp bạn xác định lượng lực cần thiết để đạt được một tốc độ cụ thể cho các đối tượng di chuyển của bạn. Ví dụ, khi bạn muốn đẩy các đối tượng lên trên, điều quan trọng là xem xét cách bạn phải điều chỉnh lực của mình để vượt qua trọng lực trong môi trường để các đối tượng di chuyển chính xác.
Các phần tiếp theo sẽ đi sâu hơn vào những khái niệm này khi bạn học cách di chuyển các đối tượng với vận tốc thẳng không đổi hoặc ban đầu với lực cần thiết để vượt qua bất kỳ lực vật lý đối kháng nào trong môi trường. Khi bạn xem xét các khái niệm vật lý này với các kỹ thuật sắp tới, bạn có thể dự đoán chính xác hơn cách điều chỉnh các giá trị thuộc tính để đạt được bất kỳ hành vi chuyển động thẳng lý tưởng nào trong Studio.
Duy trì vận tốc thẳng không đổi
Để một đối tượng đạt được và duy trì vận tốc thẳng không đổi, nó cần một lực để vượt qua bất kỳ lực vật lý đối kháng nào làm giảm vận tốc thẳng của đối tượng, hoặc khiến đối tượng vẫn đứng yên. Ví dụ, nếu bạn muốn một đối tượng có vận tốc thẳng là [0, 12, 0] trong Studio, bạn cần đủ lực để đối tượng đạt được và duy trì 12 studs mỗi giây dọc theo trục Y trong môi trường của nó.
Lượng lực cần thiết không chỉ phụ thuộc vào các lực vật lý đối kháng trong chính môi trường, chẳng hạn như trọng lực và ma sát, mà còn phụ thuộc vào chính đối tượng. Ví dụ, nếu bạn có hai đối tượng có hình dạng giống nhau đang di chuyển trên cùng một trục, đối tượng có khối lượng lớn hơn cần nhiều lực hơn để đạt được cùng một gia tốc thẳng.
Các phần phụ tiếp theo sử dụng các lắp ráp có hình dạng và kích thước khác nhau để dạy bạn cách di chuyển toàn bộ đối tượng hoặc chỉ một phần của đối tượng với vận tốc thẳng không đổi. Khi bạn thử nghiệm với các giá trị thuộc tính khác nhau, bạn sẽ học cách ước lượng lượng lực tối đa bạn cần cho các lắp ráp trong trò chơi của riêng bạn.
Sử dụng ràng buộc LinearVelocity
Các đối tượng LinearVelocity là một loại ràng buộc di chuyển áp dụng lực lên toàn bộ lắp ráp để duy trì vận tốc thẳng không đổi. Bằng cách không khóa vị trí của lắp ráp vào một trục trong suốt quá trình di chuyển của nó, lắp ráp có thể tự do xoay khi va chạm với các đối tượng khác trong không gian 3D. Loại chuyển động này dẫn đến các tình huống gameplay bất ngờ mà người chơi khó dự đoán hơn.
Để bắt đầu di chuyển lắp ráp, ràng buộc LinearVelocity cần biết:
- Điểm và hướng dương hoặc âm để áp dụng lực.
- Số lượng studs bạn muốn lắp ráp di chuyển mỗi giây.
- Lượng lực tối đa mà động cơ có thể áp dụng để lắp ráp đạt được vận tốc thẳng không đổi.
Để minh họa quy trình này, bạn sẽ cấu hình một tấm lilly với một điểm gắn mà ràng buộc LinearVelocity tham chiếu để di chuyển tấm lilly 15 studs mỗi giây dọc theo trục X âm của thế giới với vận tốc thẳng không đổi.

Thêm điểm gắn
Bạn có thể chỉ định điểm để áp dụng lực bằng cách thêm một đối tượng Attachment vào lắp ráp, sau đó cấu hình vị trí của điểm gắn trong không gian 3D. Trò chơi mẫu Đối tượng Di chuyển đặt một điểm gắn ở trung tâm của tấm lilly để ràng buộc có thể di chuyển lưới từ điểm gắn dọc theo một trục cụ thể.
Các điểm gắn bao gồm các hỗ trợ hình ảnh để giúp bạn hình dung các trục chuyển động của chúng. Mũi tên màu vàng chỉ ra trục chính của điểm gắn, và mũi tên màu cam chỉ ra trục phụ của điểm gắn. Trong khi không trục nào ảnh hưởng đến chuyển động của tấm lilly trong các bước của kỹ thuật này, điều quan trọng là hiểu các hỗ trợ hình ảnh này để tham khảo trong tương lai vì chúng có thể giúp bạn xác định hành vi lý tưởng cho các loại ràng buộc khác nhau, chẳng hạn như PrismaticConstraint trong kỹ thuật tiếp theo.

Để thêm một điểm gắn:
Trong cửa sổ Explorer, mở rộng thư mục LinearVelocityExample, sau đó mở rộng mô hình con LilyPad_DIY.
Chèn một điểm gắn vào lưới Pad.
- Di chuột qua lưới và nhấp vào nút ⊕. Một menu ngữ cảnh hiển thị.
- Từ menu, chèn một Attachment. Điểm gắn hiển thị ở trung tâm của phần.
- Đổi tên điểm gắn thành MoveAttachment.

Cấu hình ràng buộc
Bây giờ mà lưới của bạn đã có một điểm cố định để di chuyển tấm lilly, bạn có thể cấu hình các thuộc tính của ràng buộc LinearVelocity để chỉ định hướng và độ lớn cho vận tốc thẳng không đổi, số lượng studs bạn muốn lưới di chuyển mỗi giây, và lượng lực tối đa mà động cơ có thể áp dụng để lưới đạt được vận tốc thẳng không đổi.
Trò chơi mẫu Đối tượng Di chuyển áp dụng tối đa 5000 Rowtons lực không đổi để di chuyển tấm lilly 15 studs mỗi giây dọc theo trục X âm của thế giới với vận tốc thẳng không đổi. Rowtons là đơn vị vật lý chính của Roblox để đo lực. Để tham khảo các đơn vị vật lý của Roblox và cách chúng chuyển đổi sang các đơn vị mét, hãy xem Đơn vị Roblox.
Để cấu hình một ràng buộc LinearVelocity:
Để làm cho ràng buộc hiển thị trong viewport để bạn có thể tham chiếu hướng thẳng của nó, hãy bật Hiển thị Chi tiết Ràng buộc từ menu Xem của Studio.
Chèn một ràng buộc LinearVelocity vào lưới Pad.
- Trong cửa sổ Explorer, di chuột qua lưới, sau đó nhấp vào biểu tượng ⊕. Một menu ngữ cảnh hiển thị.
- Từ menu ngữ cảnh, chèn LinearVelocity.
Gán điểm gắn của lưới cho ràng buộc mới.
- Trong cửa sổ Explorer, chọn ràng buộc.
- Trong cửa sổ Thuộc tính,
- Đặt Attachment0 thành MoveAttachment.
- Đặt MaxForce thành 5000 để áp dụng tối đa 5000 Rowtons lực không đổi để đạt được vận tốc thẳng mục tiêu.
- Giữ RelativeTo là World để di chuyển tấm lilly tương đối với vị trí và hướng của thế giới.
- Đặt VelocityConstraint thành Line để ràng buộc lực dọc theo một đường thẳng từ điểm gắn.
- Đặt LineDirection thành -1, 0, 0 để di chuyển tấm lilly dọc theo trục X âm của thế giới. Lưu ý rằng nếu bạn đặt thuộc tính này thành 1, 0, 0, tấm lilly sẽ di chuyển dọc theo trục X dương của thế giới.
- Đặt LineVelocity thành 15 để di chuyển tấm lilly 15 studs mỗi giây.

Xác minh lượng lực bạn đã đặt di chuyển lưới 15 studs mỗi giây dọc theo trục X âm của thế giới.
Chọn chế độ mô phỏng Chạy từ menu thả xuống của mezzanine và nhấp vào nút Chơi để bắt đầu. Studio mô phỏng trò chơi tại vị trí camera hiện tại mà không có nhân vật của bạn trong không gian 3D.

Sử dụng ràng buộc PrismaticConstraint
Các đối tượng PrismaticConstraint là một loại ràng buộc cơ khí tạo ra một khớp cứng giữa hai điểm gắn, cho phép các lắp ráp cha của chúng di chuyển dọc theo một trục tương đối với nhau. Bằng cách khóa vị trí của cả hai lắp ráp vào một trục duy nhất, mỗi lắp ráp chỉ có thể xoay nếu chúng xoay cùng nhau theo cùng một hướng.
Loại chuyển động này dẫn đến các tình huống gameplay ổn định mà người chơi dễ dự đoán hơn. Ví dụ, trò chơi mẫu Đối tượng Di chuyển sử dụng các đối tượng PrismaticConstraint để di chuyển các nền tảng gỗ mà người chơi có thể sử dụng để cẩn thận vượt qua một con sông lớn.
Khi bạn đặt PrismaticConstraint.ActuatorType thành Motor, ràng buộc này áp dụng lực lên hai điểm gắn với mục tiêu là các điểm gắn đạt được và duy trì vận tốc thẳng không đổi. Nếu bạn neo một trong các lắp ráp cha của điểm gắn, lực sẽ tiếp tục di chuyển lắp ráp không neo với vận tốc thẳng không đổi trong khi lắp ráp neo vẫn đứng yên.
Để bắt đầu di chuyển lắp ráp, ràng buộc PrismaticConstraint cần biết:
- Điểm và hướng dương hoặc âm để áp dụng lực.
- Số lượng studs bạn muốn các điểm gắn di chuyển mỗi giây.
- Lượng lực tối đa mà động cơ có thể áp dụng để các điểm gắn và các lắp ráp cha của chúng đạt được vận tốc thẳng không đổi.
Để minh họa quy trình này, bạn sẽ cấu hình một lắp ráp gỗ với hai đối tượng có các điểm gắn con mà ràng buộc PrismaticConstraint tham chiếu để di chuyển khúc gỗ 40 studs mỗi giây dọc theo trục X âm của thế giới với vận tốc thẳng không đổi.

Cấu hình các điểm gắn
Bạn có thể chỉ định hướng để di chuyển một đối tượng cụ thể trong một lắp ráp bằng cách thêm hai đối tượng Attachment vào lắp ráp, sau đó cấu hình sự căn chỉnh và hướng của chúng trong không gian 3D. Trò chơi mẫu Đối tượng Di chuyển căn chỉnh hai điểm gắn dọc theo trục X của thế giới gần vị trí mà khúc gỗ không neo chồng lên phần neo, và định hướng trục chính của mỗi điểm gắn để hướng về trục X âm của thế giới.
Khi bạn cấu hình ràng buộc PrismaticConstraint của mình trong phần tiếp theo, nó sẽ di chuyển khúc gỗ liên quan đến phần neo. Nói cách khác, khúc gỗ sẽ di chuyển ra xa phần đứng yên không thể di chuyển vì nó đã được neo trong không gian 3D.
Để cấu hình các điểm gắn cho ràng buộc prismatic:
Trong cửa sổ Explorer, mở rộng thư mục PrismaticConstraintExample, sau đó mở rộng mô hình con Log_DIY.
Chèn một điểm gắn vào lưới Log.
- Di chuột qua lưới và nhấp vào nút ⊕. Một menu ngữ cảnh hiển thị.
- Từ menu, chèn một Attachment. Điểm gắn hiển thị ở trung tâm của phần.
- Đổi tên điểm gắn thành LogAttachment.

Sử dụng quy trình tương tự, chèn một điểm gắn vào phần Anchor, sau đó đổi tên điểm gắn thành AnchorAttachment.

Sử dụng công cụ View Selector làm tài liệu tham khảo cho tọa độ của thế giới, xoay LogAttachment và AnchorAttachment cho đến khi trục chính của mỗi điểm gắn hướng về trục X âm của thế giới.

Đặt lại vị trí của AnchorAttachment để cả hai điểm gắn được căn chỉnh trên trục X của thế giới.

Cấu hình ràng buộc
Bây giờ mà các điểm gắn của bạn đã được căn chỉnh trên cùng một trục và hướng về cùng một hướng mà bạn muốn khúc gỗ di chuyển, bạn có thể cấu hình các thuộc tính của ràng buộc PrismaticConstraint để chỉ định xem có áp dụng vận tốc thẳng không đổi mục tiêu theo hướng dương hay âm của trục chính của mỗi điểm gắn, số lượng studs bạn muốn các điểm gắn di chuyển mỗi giây, và lượng lực tối đa mà động cơ có thể áp dụng để khúc gỗ đạt được vận tốc thẳng không đổi.
Trong khi bạn có thể chọn các giá trị khác nhau cho các trường hợp sử dụng của riêng bạn, trò chơi mẫu Đối tượng Di chuyển áp dụng tối đa 50000 Rowtons lực không đổi để di chuyển các điểm gắn 40 radians mỗi giây dọc theo trục X âm của thế giới với vận tốc thẳng không đổi. Tuy nhiên, vì điểm gắn neo nằm trong một đối tượng đã được neo, chỉ có điểm gắn của khúc gỗ mới có thể di chuyển.
Để cấu hình một ràng buộc prismatic:
Chèn một đối tượng PrismaticConstraint vào lưới Log.
- Trong cửa sổ Explorer, di chuột qua lưới, sau đó nhấp vào biểu tượng ⊕. Một menu ngữ cảnh hiển thị.
- Từ menu ngữ cảnh, chèn một PrismaticConstraint.
Gán các điểm gắn của khúc gỗ cho ràng buộc mới để khúc gỗ di chuyển liên quan đến phần khối đã được neo.
- Trong cửa sổ Explorer, chọn ràng buộc.
- Trong cửa sổ Thuộc tính,
- Đặt Attachment0 thành AnchorAttachment.
- Đặt Attachment1 thành LogAttachment. Ràng buộc hiển thị trong viewport.

Trong cửa sổ Explorer, chọn ràng buộc, sau đó trong cửa sổ Thuộc tính:
- Đặt ActuatorType thành Motor. Các trường thuộc tính mới hiển thị.
- Đặt MotorMaxForce thành 50000 để áp dụng tối đa 50000 Rowtons lực không đổi để đạt được vận tốc thẳng mục tiêu.
- Đặt Velocity thành 40 để di chuyển khúc gỗ 40 studs mỗi giây.

Xác minh lượng lực bạn đã đặt di chuyển khúc gỗ 40 studs mỗi giây dọc theo trục X âm của thế giới.
Chọn chế độ mô phỏng Chạy từ menu thả xuống của mezzanine và nhấp vào nút Chơi để bắt đầu. Studio mô phỏng trò chơi tại vị trí camera hiện tại mà không có nhân vật của bạn trong không gian 3D.

Áp dụng một lực thẳng ban đầu
Một cách khác để thay đổi vận tốc thẳng của một đối tượng là áp dụng một xung lực. Sau xung lực, đối tượng sẽ giảm tốc cho đến khi trở thành đứng yên nếu có một lực đối kháng như ma sát, hoặc vẫn tiếp tục chuyển động với vận tốc thẳng không đổi nếu không có lực đối kháng nào.
Kỹ thuật này hữu ích để di chuyển các đối tượng sau một sự kiện gameplay quan trọng, chẳng hạn như một vụ nổ hoặc va chạm mạnh, vì nó cung cấp phản hồi tức thì cho người chơi. Để minh họa, phần phụ tiếp theo sẽ dạy bạn cách phóng nhân vật của người chơi lên trời khi họ va chạm với một tấm nhảy với một xung lực ban đầu mà bạn có thể điều chỉnh với các giá trị mới để đáp ứng yêu cầu gameplay của riêng bạn.
Sử dụng ApplyImpulse
Phương thức ApplyImpulse áp dụng lực lên toàn bộ lắp ráp để đạt được một vận tốc thẳng ban đầu trước khi giảm tốc đến khi dừng lại khi có các lực đối kháng. Để bắt đầu di chuyển lắp ráp, phương thức cần biết:
- Lắp ráp để di chuyển.
- Trục để áp dụng lực để đạt được vận tốc thẳng ban đầu.
- Lượng lực để áp dụng cho mỗi trục.
Bạn có thể định nghĩa tất cả các giá trị này trong một kịch bản. Ví dụ, kịch bản mẫu định nghĩa lắp ráp để di chuyển là đối tượng Humanoid của nhân vật người chơi, sau đó áp dụng một xung lực là 2500 Rowton-giây để phóng người chơi lên trên theo trục Y dương của thế giới. Lưu ý rằng các nhân vật người chơi có khối lượng khác nhau, vì vậy bạn có thể cần tăng và cân bằng lực này để phóng mọi người chơi mà không phóng các nhân vật người chơi có khối lượng nhỏ hơn quá cao.
Để di chuyển một lắp ráp bằng cách sử dụng ApplyImpulse:
Trong cửa sổ Explorer, mở rộng thư mục ApplyImpulseExample, sau đó mở rộng mô hình con JumpPad_DIY.
Chèn một kịch bản vào phần JumpPad.
- Di chuột qua phần và nhấp vào nút ⊕. Một menu ngữ cảnh hiển thị.
- Từ menu, chèn một Script. Điểm gắn hiển thị ở trung tâm của phần.
- Đổi tên kịch bản thành JumpScript.
Thay thế mã mặc định bằng mã sau:
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)