Phát triển một thế giới di động

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Tạo chuyển động trong bất kỳ môi trường nào trong một trải nghiệm giúp nó cảm thấy tức thì hơn vào thế giới của chúng tôi, bất kể đ

Tạo bão

Bão đã qua nhiều lần lượt sau khi chúng tôi định nghĩa về những gì sống ở The Mystery of Duvall Drive. Ở đầu, chúng tôi nghĩ về bão như một trụ đen lớn, và ở các lần lượt sau đó, chúng tôi xem nó như một cửa hàng trung t

  • Bão nên cho người chơi cảm giác về tác động của sự kiện này trên thế giới , bao gồm cây bị gỡ bỏ và rơi rơi xung quanh.
  • Các vòng xoay vô cực của chính đám mây nên cho người chơi một cái nhìn vào cổng trung tâm mà không tiết lộ mọi thứ . Điều này khuyến khích người chơi điều tra kỹ hơn để xem những gì đang xảy ra.
  • Điểm sáng càng chặt chẽ hơn sẽ cho phép chúng ta tập trung vào bố trí của ngôi nhà, là nơi chính của nhân vật và nơi hầu hết các hoạt động gameplay được thực hiện.

Để làm cho bão có cảm giác động, tấn công và luôn thay đổi trong môi trường của nó, chúng tôi đã sử dụng các hệ thống và tính năng sau đây:

  1. TweenService> - Dành cho di chuyển trên mây.
  2. Thay đổi ánh sáng - Để tạo ra đám mây cho đám mây.
  3. Beams > - Đối với "ánh sáng volumetric" và bóng chuyền.
  4. Bộ phát hạt vụn > - Đối với những hạt vụn bay lên cổng và bay xung quanh do gió thổi.
  5. Hoạt họa > - Dành cho những cây đang bị gió thổi vào.

Thêm đám mây với các chất béo

Trong khi đám mây động là tuyệt vời cho những đám mây thực tế c

Một lưới mắt đơn.
Lớp mạng đám mây không có chúng textures!

Vì mỗi lưới cloud cần phải lớn lắm để xây quanh ngôi nhà và truyền tải cách rất lớn của bão, chúng tôi biết chúng tôi cần phải gạch lớp textur mà chúng tôi muốn sử dụng trên các lưới cloud cụ thể này để có thể lặp lại trên toàn bề mặt của lưới. Chú

Không giống như các emitter hạt nhân hoặc tia lửa, lưới cho phép chúng ta có thể phản xạ ánh sáng từ mỗi lưới, điều này rất quan trọng khi chúng ta muốn triển khai đèn trên đám mây. Chúng tôi cũng mô phỏng trong twisting để ánh sáng phản xạ từ

Khi chúng tôi bắt đầu thêm ánh sáng vào nó, chúng tôi cần phải thêm chi tiết vào các mạng để làm cho chúng phản ứng tốt hơn với ánh sáng!

Mạng lưới đám mây xoay

Sau khi chúng tôi hài lòng với tổng hình dạng thị giác của các đám mây, chúng tôi cần phải làm cho nó di chuyển! Chúng tôi có hình dạng chung của mỗi lớp đám mây ở chỗ, nhưng nó đòi h

Chúng tôi muốn một phương pháp dễ sử dụng để quay các instan

Như trong nhiều trường hợp trong hội nghị trình bày, chúng tôi đã sử dụng một nhãn LocalSpaceRotation để có thể quản lý các instream ảnh hưởng trong Studio bằng cách sử dụng một plugin quản lý instream. Chúng tôi đã sử dụng chỉ m

Trong


local function Init()
for _, obj in CollectionService:GetTagged("LocalSpaceRotation") do
if obj:IsDescendantOf(workspace) then
SetupObj(obj)
end
end
end
CollectionService:GetInstanceAddedSignal("LocalSpaceRotation"):Connect(function(obj)
objInfoQueue[obj] = true
end)
CollectionService:GetInstanceRemovedSignal("LocalSpaceRotation"):Connect(function(obj)
if objInfo[obj] then
objInfo[obj] = nil
if objInfoQueue[obj] then
objInfoQueue[obj] = nil
end
end
end)
Init()

objInfo là một bản đồ có thông tin cho tất cả các đối tượ

Chúng tôi đã quay các Update hồ sơ trên


local parentTransform
if parentObj:IsA("Model") then
if not parentObj.PrimaryPart then
-- phần chính có thể không phải là một dòng
continue -- chờ đợi phần chính để sao chép
end
parentTransform = parentObj.PrimaryPart.CFrame
else
parentTransform = parentObj.CFrame
end
curObjInfo.curAngle += dT * curObjInfo.timeToAngle
local rotatedLocalCFrame = curObjInfo.origLocalCFrame * CFrame.Angles( curObjInfo.axisMask.X * curObjInfo.curAngle, curObjInfo.axisMask.Y * curObjInfo.curAngle, curObjInfo.axisMask.Z * curObjInfo.curAngle )
if obj:IsA("Model") then
obj.PrimaryPart.CFrame = parentTransform * rotatedLocalCFrame
else
obj.CFrame = parentTransform * rotatedLocalCFrame
end

Chúng tôi kiểm tra một Model.PrimaryPart hợp lệ để được cài đặt để xử lý streaming. Nếu một bản cập nhật được gọi trên đối tượng của chúng tôi khi m

Thiết kế đòn đánh chớp

Vì Studio không cung cấp một máy phát điện trong hộp, và hệ thống hạt nhân vật có một số hạn chế không hoạt động cho các cú đáp lửa anh hùng, chúng tôi đã phải thành tính sáng tạo với giải pháp cho c

Tia hình chữ nhật

Chúng tôi thường sẽ sử dụng một công cụ sequencer hoặc thời gian màn hình để lái thời gian của một chiếc đòn đèn bắn như thế này, nhưng vì Studio chưa cung cấp tính năng này, chúng tôi quyết định viết các script sẽ điều khiển thời gian của đòn đèn bắn này.

  1. Các yếu tố của các đòn đánh sét, chẳng hạn như cấu trúc, độ sáng và độ trễ của chúng, được ngẫu nhiên hóa với mỗi đòn đánh.
  2. Thay đổi âm thanh và post FX được đồng bộ với đòn đánh FX.
  3. Người chơi ở trong hoặc khu vực bị hỏng sẽ không thể nhìn thấy hoặc nghe thấy chúng.

Chúng tôi có một phe Script bên trong máy chủ, tính toán các tham số và thời gian, gửi chúng cho tất cả các khách hàng và chờ đợi một lượng thời gian ngẫu nhiên:


local function LightningUpdate()
while true do
task.wait(rand:NextNumber(3.0, 10.0))
local info = CreateFXData()
lightningEvent:FireAllClients(info)
end
end

Trong CreateFXData , chúng tôi điền vào cấu trúc thông tin, để tất cả các khách hàng đều có cùng các tham số.

Ở phía client ( LightningVFXClient ) chúng tôi kiểm tra xem client này có nên chạy FX không:


local function LightningFunc(info)
-- không FX khi ở trong nhà
if inVolumesCheckerFunc:Invoke() then
return
end
-- không có FX khi không ở trong thế giới "bình thường"
if not gameStateInfoFunc:Invoke("IsInNormal") then
return
end

Ngoài ra, chúng tôi thực hiện chuỗi để cài đặt các bề mặt, vị trí và độ sáng, chạy tweens và sử dụng task.wait(number) . Các biến đổi ngẫu nhiên là từ cấu trúc thông tin mà chúng tôi nhận từ máy chủ, và một số số là đã định.


beam.Texture = textures[info.textIdx]
beamPart.Position = Vector3.new(info.center.X + og_center.X, og_center.Y, info.center.Y + og_center.Z)
-- Xóa
beam.Brightness = 10
ppCC.Brightness = maxPPBrightness
ppBloom.Intensity = 1.1
bottom.Position = top.Position
tweenBrightness:Play()
tweenPPBrightness:Play()
tweenPPBrightness:Play()
tweenBottomPos:Play()
tweenBrightness.Completed:Wait()
-- âm thanh
if audioFolder and audioPart then
if audioFolder.Value and audioPart.Value then
audioUtils.PlayOneShot(audioObj, audioFolder.Value, audioPart.Value)
end
end
task.wait(info.waitTillFlashes)
-- and so on

Để kiểm tra nếu một người ở ngoài nhà chúng tôi sử dụng một hành động giúp inVolumesCheckerFunc chức năng, which goes over pre-placed volume approaching inside areas, and检查 if player position is inside any of them (PointInABox). We could have used touch-based detection, n

Để kiểm tra nếu một người đang ở vùng đất bị hỏng, chúng tôi gọi một hàm gameStateInfoFunc giúp, which检查 hiện tại trạng thái game. Để chơi một âm thanh ngẫu nhiên từ một thư mục, chúng tôi cũng sử

Sử dụng Hệ thống Phát hành Hạt liệu

Các hạng siêu anh hùng được hỗ trợ bởi một hệ thống hạt vật bao gồm các tia lửa xa bằng cách tạo ra cảm giác của một lớp mây trong bóng tối bắt ánh sáng từ các đòn tấn công xa, hoặc chiếu sáng mây. Chúng tôi đạt được hi

Làm cho những cây bị gục trong gió

Sau khi chúng tôi có những đám mây và các ngọn lửa hoạt động theo cách mà chúng tôi muốn, chúng tôi sau đó cần phải thêm hai thành phần chính khác của một bão: gió và mưa! Những thành phần này

Chúng tôi biết bạn cần thực sự bán hiệu ứng của gió và mưa, chúng tôi cần cây chính để di chuyển. Có một vài cách bạn có thể làm điều này trong khi Engine, bằng cách di chuyển các bộ phận bằ

Chúng tôi bắt đầu bằng cách skinning một số cây từ Endorse Model Pack - Forest Assets . Vì những cây này đã tồn tại, và kinh nghiệm của chúng tôi đã diễn ra ở phía bắc miền Tây, nó đã tiết kiệm cho chúng tôi một vài thời gian sớm khi phải tạo mỗi một mô hình cây.

Gói Rừng bao gồm một số loại cây, có thể tiết kiệm thời gian cho bạn trong các trải nghiệm của riêng bạn.

Sau khi chúng tôi chọn cây của chúng tôi, chúng tôi biết chúng tôi cần phải skin chúng. Skinning một mesh là hành động thêm các khớp (hoặc xương) vào một mesh trong mộ

Chúng tôi biết chúng tôi muốn lưu thời gian và tái sử dụng cùng một hoạt hiệu ứng động, vì vậy chúng tôi đã xây dựng cấu hình cây thứ nhất của

Cây có các kết cấu chính, thứ tha và thứ ba để chúng ta có thể có động họa tưởng tượng khi bị gió thổi quanh.

Khi chúng tôi đã tạo ra các khớp/xương của chúng tôi, đã đến lúc tạo ra một hoạt họa thử nghiệm để di chuyển tất cả các khớp và xương trong Studio

Cùng một lớp trong Studio.

Sau khi chúng tôi hài lòng với kết quả trên cây đó, thời gian đã đến để kiểm tra cùng một hoạt họa trên một cây khác! Chúng tôi đã biết nó sẽ là cùng một hoạt họa giữa các rục của mỗi đánh máycây, vì vậy chúng tôi chỉ đảm bảo rằng hoạt h

Hoạt họa mà chúng tôi nhập vào cây Redwood.

Để làm điều này, chúng tôi đã lấy cây Beechwood từ rừng đó và xây dựng một giàn khí cầu tương tự, sử dụng cùng một cái tên chính xác cho các khớp nối. Điều này để cho phép chúng tôi áp dụng hoạt họa mà chúng tôi đã nhập trước

Cây Beechwood có cùng một tên chính xác cho các kết cấu của nó, chỉ không phải là cùng một số lượng. Điều này tốt vì hệ thống hoạt họa chỉ áp dụng hoạt họa cho những kết cấu cụ thể đó mà trùng với tên trong nó! Vì lý do này, chúng tôi có thể áp dụng c

Sau khi chúng tôi rích và skin cây Beechwood, chúng tôi có thể then import it and apply the exact same hiệu ứng động. Điều này có nghĩa là lặp lại và chỉnh sửa chính xác cùng một hoạt họa. Điều này có nghĩa là lặp lại và chỉnh sửa chính xác cùng một hoạt họa.

Sử dụng Editor hoạt họa, chúng ta có thể áp dụng cùng một hoạt họa cây Redwood cho cây Beechwood!

Một khi chúng tôi có tất cả các loại cây chúng tôi muốn hoạt họa, chúng tôi đã làm mỗi thứ thành gói để chúng tôi có thể tiếp tục chỉnh sửa và cập nhật trong khi chơi một số hoạt họa xung quanh khu vực ch

Chúng tôi đã sử dụng cây hoa mọc ngay xung quanh ngôi nhà nơi vực xoay mạnh nhất và hiệu ứng thị giác sẽ là tác động mạnh nhất đối với người chơi.

Tạo ra Debris Bão

Chúng tôi muốn trời đất xuất hiện dày đặc, và cho sương và tàn tạo để thổi qua các cây. Để làm điều này, chúng tôi thiết lập một vài bộ phận tàng hình để

Chúng tôi đã sử dụng một số khối lượng mưa và tất cả các tấm bao phủ của mưa mà chúng tôi muốn.

Các hạt mưa sử dụng một trong những thuộc tính emitter hạt mưa mới ParticleEmitter.Squash đ

Một giá trị Squash 3 bắt đầu kéo dài thêm chất liệu.
Một giá trị Squash 20 kéo dài nhiều hơn các hạt nhưng chúng tôi cũng cần phải tăng giá trị Kích thước lên cũng như thế.

Đối với sương mù, sương mù và những chiếc lá rơi qua, nó đã rất đơn giản để thêm một khối lượng lớn hơn từng khu vực bởi vì chúng tôi không cần một ton các hạt nhỏ chạy đồng thời. Chúng tôi bắt đầu bằng cách thiết lập một khối lượng và nhận được t

Cuối cùng có một vài thể tích hạt nano nên chúng tôi không có hạt nano nào vào nhà, và vì chúng tôi không cảm thấy cần phải di chuyển qua các cây như mà sương mù đã làm.
Phần lượng hạt sương mù đã lớn hơn nhiều khi các hạt sương mù lớn, và chúng tôi không cần phải đạt độ chính xác cao với vị trí.

Sau đó, chúng tôi đã làm cho lá cây của chúng tôi bị nổ và lông thú của gió, và đặt các hạt về tất cả các vị trí quay/di chuyển và bắt đầu tất cả các vị trí quay/di chuyển tại tốc độ khác nhau và bắt đầu tại tốc độ khác nhau. Điều này có nghĩa là cá

Hạt sương mù
Hạt lá cây

Kết quả là một vài hành động tuyệt vời giữa những cây di chuyển, cửa sổ bị nổ, và ngọn lửa để tạo ra hiệu ứng của bão xung quanh mắt trung tâm của bão.

Cài đặt Con mắt của bão

Mắt đá bị gãy với một trung tâm phát sáng là để cho người chơi có đầu mối rằng có một cái gì đó bất thường và kì lạ đang xảy ra tại ngôi nhà mà họ nên k

Việc thiết lập ánh sáng cuối cùng trong cảnh của bạn sớm có thể tiết kiệm cho bạn rất nhiều công việc không cần thiết. Bạn sẽ không thể nhìn thấy chi tiết bề mặt trên những vòng nhẫn với ánh sáng cuối cùng của cảnh của chúng tôi, vì vậy không cần phải dành thời g

Khoảng cách từ người chơi cũng có nghĩa là chúng tôi có thể hoàn toàn dựa vào bản đồ bình thường cho chi tiết bề mặt của mắt để mà lưới chỉ là một cái hình cầu đơn giản! Chúng tôi đã chế tạo các chi tiết vào một lưới cao cấp hơn và nấu bản đồ của n

Tạo hình cao pol
Mesh thấp
Màn hình thấp với thông tin bình thường từ bức tượng poli cao đã nướng

Để thêm một cảm giác siêu nhiên vào mắt và để làm nổi bật sự hiện diện của nó, chúng tôi quyết đị

Bức vẽ hình ảnh trên cầu nhân tạo. Chúng tôi đã tạo ra một độ dầy tối thiểu xung quanh mắt để mang lại cảm giác sâu hơn và thú vị hơn.

Một thách thức khác mà chúng tôi đã phải đối mặt khi tạo ra con mắt đã được á

Chúng tôi đã có thể thêm chuyển động vào mắt và những vòng tròn của nó nhờ cùng một script mà chúng tô

Hình ảnh mà chúng tôi đã tạo ra một giải động thế giới nằm ngoài những đám mây. Khi người chơi đang xa một cái gì đó, một hình ảnh đơn giản có thể là đủ để tạo ra giải động sâu và phức tạp trong cảnh của bạn!

Tạo Kho Chứa Phát Triển

Một trong những điều thú vị nhất để sản xuất là các không gian bị hỏng, nơi chúng tôi có thể làm mất niềm tin của người chơi về thực tế bằng cách hoàn toàn thay đổi nó xung quanh họ. Ví dụ, trong câu đố của cha tôi

Chúng tôi thiết lập điều này với một chiếc di chuyển đơn giản của bức tường, và một bố trí thông minh của các phòng của chúng tôi mà sẽ xuất hiện ở hai bên của kho chứa. Trong trạng thái bình thường của phòng, kho chứa là một coridor đơn giản, nhưng trong không g

Tình trạng bị hỏng của kho chén của bếp.
Bức tường giả dần xa khỏi người chơi.

Bức tường giả mạo là một nhóm mô hình mà chúng tôi sẽ di chuyển trở lại khi người chơi nhập một kích thước giao dịch, which was a transparent part early in the pantry that they would walk through. That trigger was also used in a script similar to ones used on all our doors, which called the TweenService to move from one

Volume của bộ phận này sẽ kích hoạt một bức tường giả mạo ở phía sau nó để di chuyển đến điểm cuối của nó. Nó được làm nổi bật trong hình ảnh này với một màu vàng.
Target_Closed là một phần mục tiêu chung chúng tôi đã sử dụng trên tất cả các cửa của chúng tôi cho nơi chúng nên quay. Ở đây nó đã được chuyển đổi để cho biết bức tường hành lang nào để đi.

Vì Class.TweenService là một hệ thống chung, tất cả các mô hình dữ liệu bên tường của chúng tôi đều phải chứa cùng một bộ phận. Ví dụ, hình ảnh dưới đây là một ví dụ về một loạt các script cửa chung định nghĩa âm thanh bằng một "giá trị" dưới các mô hình "Grow_Wall

Cùng một script đó, với một số thay đổi trong mẫu mã sau đây, cũng kích hoạt âm thanh cho kho động. Điều này thêm rất nhiều vào chuyển động!


local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local model = script.Parent
local sound = model.Sound.Value
local trigger = model.Trigger
local left = model.TargetL_Closed
local right = model.TargetR_Closed
local tweenInfo = TweenInfo.new(
model.Speed.Value, --Tốc độ/Thời gian cửa tự động
Enum.EasingStyle.Quart, --Kiểu Dễ Dàng
Enum.EasingDirection.InOut, --Hướng dẫn chỉ định
0, --Tiếp tục đếm
false, --Đảo ngược lại
0 --Độ trễ
)
local DoorState = {
["Closed"] = 1,
["Opening"] = 2,
["Open"] = 3,
["Closing"] = 4,
}
local doorState = DoorState.Closed
local playersNear = {}
local tweenL = TweenService:Create(left, tweenInfo, {CFrame = model.TargetL_Open.CFrame})
local tweenR = TweenService:Create(right, tweenInfo, {CFrame = model.TargetR_Open.CFrame})
local tweenLClose = TweenService:Create(left, tweenInfo, {CFrame = model.TargetL_Closed.CFrame})
local tweenRClose = TweenService:Create(right, tweenInfo, {CFrame = model.TargetR_Closed.CFrame})
local function StartOpening()
doorState = DoorState.Opening
sound:Play()
tweenL:Play()
tweenR:Play()
end
local function StartClosing()
doorState = DoorState.Closing
--model ["Cửa"]:Chơi()
tweenLClose:Play()
tweenRClose:Play()
end
local function tweenOpenCompleted(playbackState)
if next(playersNear) == nil then
StartClosing()
else
doorState = DoorState.Open
end
end
local function tweenCloseCompleted(playbackState)
if next(playersNear) ~= nil then
StartOpening()
else
doorState = DoorState.Closed
end
end
tweenL.Completed:Connect(tweenOpenCompleted)
tweenLClose.Completed:Connect(tweenCloseCompleted)
local function touched(otherPart)
if otherPart.Name == "HumanoidRootPart" then
local player = Players:GetPlayerFromCharacter(otherPart.Parent)
if player then
--print("触摸")
playersNear[player] = 1
if doorState == DoorState.Closed then
StartOpening()
end
end
end
end

Một khi chúng tôi có bức tường giả động về phía sau của phòng, chúng tôi cần nội dung còn lại để di chuyển với nó. Để làm điều đó, chúng tôi cần tất cả các vật phẩm trên kho tài sản đư

Làm Nhà Trại Bị Hỏng

Studio là một trình động cơ dựa vật lý tuyệt vời mà bạn có thể sử dụng để tạo ra mọi thứ từ cửa hàng quay đến một nền tảng quay. Với hệ thống dựa vật lý của chúng tôi, chúng tôi muốn sử dụng vật lý để tạo ra một cảm giác thực tế trong m

Constraints > are a group of physically-based motors thatalign objects and constrain behaviors. For example, you can use a rod constraint to connect to objects in order to keep them a fixed distance from each other, or the rope constraint to have a lamp hanging

Câu đố của con trai bắt đầu với những người chơi trong cùng một phòng, nhưng mọi thứ đều bên cạnh.

Khi người chơi đến với khu vực chính của câu đố, họ đã được chào đón với một cái nhìn quen thuộc trên Roblox: một khóa động vật. This particular khóa động vật bao gồm một loạt các bệ an toàn và tường quay, cùng với "các khu vực an toàn" mà tiến hành

Hình dạng não-bending ẩn sự thật rằng gameplay ở đây rất đơn giản.

Tại sao chúng tôi sử dụng hạn chế ở đây? Bởi vì TweenService hoặc các phương pháp khác không di chuyển người chơi khi họ đang đứng trên chúng. Mà không có

Bạn có thể xem bạn bè của bạn quay tròn khi cố gắng điều hướng mê cung rào chắn cũng như.

Để làm điều này, chúng tôi đã cần phải sử dụng tài nguyên từ bộ dụng cụ hiện tại của chúng tôi và thêm bất kỳ nội dung mới nào cho một hiệu ứng thị giác. Chúng tôi đã làm một vài bức tường và các bộ phậ

Chúng tôi biết rằng vì chúng tôi đang sử dụng hạn chế, chúng tôi sẽ không thể kết

Lúc này đã đến lúc cài đặt thực tế của hành lang hạn chế chính, và thêm các kết nối mà sẽ hoạt động như là hướng của bộ

Để giữ các khu vực này quay với tốc độ xoay tương tự, chúng tôi sau đó cài đặt HingeConstraint.AngularVelocity, HingeConstraint.MotorMaxAccelerationHingeConstraint.MotorMaxTorque lên giá trị mà cho phép di chuyển và ngă

Attachment0 đã khá là một cái ghim cho hàng rào và Attachment1 đại diện cho hàng rào chính. Chúng tôi có hàng rào liên tục di chuyển, nhưng bạn cũng có thể sử dụng một hạn chế hàng rào cho các cửa.

Bây giờ chúng tôi cần phải làm cho bức tường xoay. Bức tường cần phải xoay trên trung tâm hiển nhiên của chúng, và chúng tôi biết chúng muốn để có thể xử lý bất kỳ hướng nào so với phần còn lại của cấp độ. Giống như các bệ, chúng tôi xây dựng nó để tất

Chúng tôi muốn tái sử dụng nhiều mạng lưới thực tế nhà máy để tiết kiệm hiệu hiệu lực, vì vậy chúng tôi đã theo con đường tương tự như các bệ như. Vài loại tường đã được tạo ra có thể kết hợp lại trong các kombinación khác nhau cho một số biến thể.

Chúng tôi đã sử dụng Texture đối tượng trên SurfaceAppearance đối tượ

Bạn có thể thấy cả hành vi tương tự và cài đặt cho hạn chế hành lang và cũng làm thế nào chúng tôi sử dụng Texture đối tượng.

Một khi chúng tôi đã thử một vài nền tảng và bức tường quay, chúng tôi đã làm một vài biến thể và chơi với các vị trí của họ để đảm bảo rằng khóa hình cản trở được thú vị, bẻ cắ

Nếu bạn không chắc chắn về những gì các thiết bị phần cứng của bạn đang đánh, bạn có thể bật Độ chính xác va chạm từ widget Tùy chọn hiển thị ở góc trên cùng bên phải của các cửa sổ 3D.

A close up view of the 3D viewport with the Visualization Options button indicated in the upper-right corner.
Khi bị vô hiệu hóa hiển thị, bạn có thể xem đại diện hình họa geometri bình thường mà nó hiển thị trong trò chơi.
Khi hiển thị collisions được bật, bạn có thể thấy các chiếc lá cây không có collisions, vì vậy chúng sẽ không làm gián đoạn các platform hoặc bức tường quay.

Như bạn có thể thấy dưới các cửa/cửa sổ là những lỗ nhỏ, nhưng chi tiết nhỏ hơn như sub-panelling không phải là như vậy. Điều này là bởi vì chỉ số CollisionFidelity cho các