Các thí dụ ControllerManager quản lý điều khiển chuyển động giả lập cho phần được gán RootPart của nó.Cùng với ControllerPartSensors, nó có thể được sử dụng để xây dựng một điều khiển nhân vật dựa trên vật lý.
Cài đặt cốt lõi
ControllerManager yêu cầu một BasePart để sử dụng làm rễ của nó. Lực di chuyển và cảm biến phần sẽ ở trên phần này.
Nhóm phần thành một Model của tổ chức cùng với các thành phần khác.
Thêm một ControllerManager instance vào mô hình.Nếu ControllerManager không xuất hiện ban đầu trong menu chèn đối tượng, bỏ chọn "Hiển thị chỉ các đối tượng được đề xuất" trong cài đặt chèn của menu.
Cài đặt cảm biến
Một ControllerPartSensor phát hiện các bộ phận có cùng mã mà Humanoid sử dụng để phát hiện sàn và thang.
Chèn một ControllerPartSensor như con của RootPart và đổi tên thành GroundSensor để dễ dàng xác định mục đích của nó hơn.Sau đó, trong cửa sổ Tính năng , đặt tính năng của nó thành 2 nhưng để lại nó làm Sàn .
Thêm một ControllerPartSensor khác như một con của RootPart và đổi tên thành ClimbSensor .Sau đó, trong cửa sổ Tính năng , đặt tính năng của nó thành 1 và của nó thành Thang .
Cài đặt điều khiển
Các ví dụ điều khiển như GroundController và ClimbController cho thấy phần quản lý cách tương tác với thế giới, làm việc cùng với các cảm biến bạn đã cài đặt trong quá trình cài đặt cảm biến.
Chèn cả GroundController và ClimbController như con của ControllerManager .
Chọn instance mới GroundController và sau đó, trong cửa sổ Tính năng, đặt thuộc tính GroundOffset của nó thành một giá trị mà phần quản lý nên "lơ lửng" trên mặt đất.Thật quan trọng rằng giá trị này là ít hơn so với giá trị của SearchDistance đối với Cảm biến Mặt đất, bởi vì cảm biến đó sẽ bị vô hiệu hóa nếu mất cảm giác về mặt đất và hiệu quả ngăn chặn lực của nó trên phần.
Tham chiếu liên kết
Để hoàn thành thiết lập cốt lõi, bạn sẽ cần phải liên kết các thuộc tính khác nhau của ControllerManager với các đối tượng bên trong chính Model.
Chọn ví dụ / trường hợpControllerManager .
Trong cửa sổ Tính năng, nhấp vào mỗi trong số các tính năng sau và sau đó, trở lại cửa sổ Khám phá, nhấp vào ví dụ tương ứng để hoàn thành liên kết.
- Liên kết thuộc tính ActiveController với ví dụ / trường hợp Điều Khiển Mặt Đất .
- Kết nối thuộc tính RootPart với phần bạn đã đặt tên RootPart .
- Liên kết thuộc tính ClimbSensor với ví ví dụ / trường hợp ClimbSensor .
- Kết nối thuộc tính GroundSensor với ví dụ Cảm biến Mặt đất .
Thử nghiệm
Với cảm biến và điều khiển ở địa điểm, và với tham chiếu liên kết , bạn có thể kiểm tra điều khiển trong Studio.
Bắt đầu kiểm tra chơi bằng cách sử dụng chế độ Chạy ( F8 ) vì bạn không cần phải chèn nhân vật avatar của mình vào kịch bản này.
Phần gốc nên nổi trên mặt đất tại giá trị GroundController.GroundOffset mà bạn đặt trong Thêm điều khiển .Nó cũng nên xoay để phù hợp với vector ControllerManager.FacingDirection .
Thử nghiệm với các chuyển động và hướng khác nhau bằng cách thay đổi vector MovingDirection và FacingDirection của ControllerManager trong thời gian thực hiện.Cũng thử nghiệm với các thuộc tính khác nhau của instance GroundController như AccelerationTime , DecelerationTime , và GroundOffset .
Quản lý điều khiển Điều khiển mặt đất
Cảm biến tùy chỉnh
Các tùy chọn ControllerPartSensor.SensorMode và Floor của Ladder chạy mã cảm biến chính xác Humanoid , cho phép bạn sử dụng chúng để tương thích ngược.Tuy nhiên, bạn cũng có thể tùy chỉnh cách và khi nào các bộ phận có thể đi bộ và leo được phát hiện, cuối cùng thay đổi khi bộ phận được quản lý đi bộ/leo.
Chuyển ControllerPartSensor.UpdateType từ Đọc sang Thủ công .
- Khi đọc kích hoạt các thuộc tính đầu ra để cập nhật phù hợp với SensorMode mỗi khi bạn đọc chúng.Nó về cơ bản đặt cảm biến trong chế độ "chỉ đọc" nơi bất kỳ thứ gì bạn viết vào các thuộc tính này sẽ bị thay thế bởi hành vi cảm biến nội bộ của nó.
- Manual tắt chức năng cảm biến nội bộ.Các thuộc tính ra là miễn phí cho bạn viết bất kỳ cách nào bạn muốn và SensorMode không làm gì cả.
Tạo một kịch bản thực hiện logic cảm biến của riêng bạn và ghi các đầu ra vào các thuộc tính đầu ra cảm biến của bạn.Thông thường bạn sẽ sử dụng một truy vấn không gian như WorldRoot:Raycast() hoặc WorldRoot:Blockcast() mà trả về một RaycastResult .Tiếp theo, kịch bản của bạn có thể lấy các thuộc tính kết quả và đặt chúng trên các tương đương cảm biến:
Lưu ý rằng bạn sẽ cần quản lý tần suất chạy và cập nhật các instane cảm ví dụ / trường hợpcủa bạn.
The ControllerManager sẽ tiếp tục sử dụng các cảm biến đã được gán, lấy dữ liệu bạn chuyển cho nó.