Friday, September 14, 2018

Thành phần gameplay

Thành phần gameplay
Đã kiểm tra với phiên bản: 2018.1
- -
Khó khăn: Người mới bắt đầu
Hệ thống chỉ huy
Bộ công cụ trò chơi có chứa một hệ thống lệnh để kết nối các yếu tố trò chơi với nhau. Nó hoạt động bằng cách sử dụng ba kịch bản chính: SendGameCommand, GameCommandReceive và GameCommandHandler.

Kịch bản SendGameCommand quyết định khi nào điều gì đó sẽ xảy ra - ví dụ, khi ký tự bước trên một miếng đệm áp lực. Sau đó nó sẽ gửi một 'lệnh' có một kiểu cụ thể, chẳng hạn như Kích hoạt, Đóng, Ngừng.

Lệnh này sau đó được nhận bởi kịch bản GameCommandReceiver. Kịch bản này có một tập hợp các hành động khác nhau sẽ xảy ra cho bất kỳ lệnh nào mà nó nhận được. Ví dụ, khi nhận được một lệnh Activate, nó thực hiện một hành động trên ba trình xử lý quan tâm đến lệnh cụ thể đó.

GameCommandHandler là nơi kết quả của lệnh. Nó có thể làm một cái gì đó như biến một GameObject trên hoặc chơi một âm thanh. Điều quan trọng là kịch bản GameCommandHandler là trên cùng một GameObject như kịch bản GameCommandReceiver cho phản ứng của nó. Đây là cách mà GameCommandReceiver đăng ký sự quan tâm của nó trong một lệnh cụ thể.

Có một số điều có thể gây ra một lời khen ngợi được gửi đi và do đó có một số lớp mà kế thừa từ SendGameCommand để trang trải các trường hợp này. Chúng bao gồm: SendOnBecameInvisible, SendOnBecameVisible, SendOnCollisionEnter, SendOnCollisionExit, SendOnCollisionStay, SendOnTriggerEnter, SendOnTriggerExit và SendOnTriggerStay.

Ngoài ra còn có một số kết quả có thể được gây ra bởi một lệnh và do đó có một số lớp mà kế thừa từ GameCommandHandler. Các lớp này bao gồm: MovingPlatform, TriggerUnityEvent, ToggleGameObjectActive, SwitchMaterial, StartPlayableDirector, SimpleTransformer, SimpleRotator, SimpleTranslator, SetGameObjectActive, SetAnimatorTrigger, RespawnPlayer, PlaySound, PlayAnimation, ParticleSystemEmit và GameplayCounter. Lưu ý rằng GameCommandHandler là trừu tượng và do đó không bao giờ tồn tại như chính nó mà thay vào đó là một trong các lớp kế thừa được liệt kê.

Ví dụ, nếu bạn muốn một cánh cửa mở khi Ellen đứng trên một miếng đệm áp lực, sử dụng một kịch bản SendOnTriggerEnter để gửi một lệnh Open đến một kịch bản GameCommandReceiver khi Ellen đứng trên một miếng đệm áp lực. Cánh cửa sẽ hoạt hình và tạo ra âm thanh khi nó mở ra, do đó, nó có ý nghĩa để có một kịch bản SetAnimatorTrigger và một kịch bản PlaySound lắng nghe GameCommandReceiver.

Gửi lệnh trò chơi
Đây là lớp cơ sở để tạo các lệnh. Ví dụ, prefab DoorHuge sử dụng lớp này để kích hoạt một cảnh grenadier (mở Assets> 3DGamekit> Scenes> Level1 và chọn Level01Gameplay> DoorHuge trong cửa sổ Hierarchy).
Loại tương tác: Cài đặt mặc định: Không Xác định loại lệnh được gửi. Điều này chỉ được sử dụng cho việc ghi nhãn và không ảnh hưởng đến hiệu ứng cuối cùng của lệnh (lệnh mở cửa có thể dễ dàng sử dụng kiểu Spawn as Open miễn là trình xử lý được thiết lập để phản ứng với Spawn). Các loại khác nhau là: None, Activate, Deactivate, Open, Close, Spawn, Destroy, Start, Stop.

Đối tượng tương tác: Đây là Bộ nhận lệnh trò chơi thu thập các trình xử lý khác nhau của các lệnh khác nhau.

One Shot: Cài đặt mặc định: false Cho dù lệnh này có thể được gửi nhiều lần.

Cool Down: Default Setting: 1 Nếu đây không phải là lệnh One Shot thì điều này xác định khoảng thời gian trước khi lệnh có thể được gửi lại.

Trên Gửi âm thanh: Tùy chọn này có thể được đặt thành Nguồn âm thanh, chẳng hạn việc gửi lệnh phát một đoạn âm thanh. Bạn có thể gán bất kỳ GameObject nào có thành phần Nguồn âm thanh cho vùng này.

Độ trễ âm thanh: Cài đặt mặc định: 0 Nếu có Nguồn âm thanh được đặt trong On Send Audio, điều này sẽ xác định khoảng thời gian sau khi lệnh được gửi mà âm thanh phát.

Để biết thêm thông tin, hãy xem các loại phụ Lệnh Gửi Trò chơi.

Game Lệnh nhận
Kịch bản này có một bộ sưu tập các loại lệnh trò chơi và các trình xử lý lắng nghe cho từng lệnh. Đây là hệ thống tổ chức kết nối các lệnh được gửi và xử lý.
Bạn không cần phải đặt bất kỳ trường nào cho tập lệnh này. Các lệnh được gửi đến máy thu này được điều khiển bởi các kịch bản lệnh Gửi trò chơi khác nhau và các trình xử lý lắng nghe các lệnh đó được điều khiển bởi các kịch bản lệnh Command Handler khác nhau.
Chơi trò chơi miễn phí Command Handler
Đây là lớp cơ sở trừu tượng để xử lý các lệnh. Bởi vì lớp này là trừu tượng, nó không tồn tại ở dạng cơ sở của nó mà thay vào đó, là một trong các lớp con của nó. Tuy nhiên, tất cả các Trình xử lý lệnh trò chơi đều có các trường sau đây:

Loại tương tác: Cài đặt mặc định: Không Xác định loại lệnh cần được nghe. Nó chỉ được sử dụng để ghi nhãn và không ảnh hưởng đến hiệu ứng cuối cùng của lệnh (một trình xử lý để mở một cửa có thể dễ dàng sử dụng kiểu Spawn as Open miễn là người gửi cũng được thiết lập để gửi một lệnh Spawn). Các loại khác nhau là: None, Activate, Deactivate, Open, Close, Spawn, Destroy, Start, Stop.

Là một Shot: Mặc định Thiết lập: false Có hay không phản ứng này có thể xảy ra nhiều hơn một lần.

Cool Down: Cài đặt mặc định: 0 Nếu đây không phải là trình xử lý One Shot thì điều này xác định khoảng thời gian trước khi trình xử lý này có thể được kích hoạt lại.

Bắt đầu trễ: Cài đặt mặc định: 0 Xác định khoảng thời gian sau khi nhận lệnh mà lệnh được xử lý.

Để biết thêm thông tin, hãy xem các loại phụ trò chơi xử lý lệnh.

Gửi Sub-type Command Game
Các phần phụ sau đây là các lớp mà bạn có thể sử dụng thay cho kịch bản lệnh Gửi trò chơi. Mỗi lớp chứa các trường Lệnh Gửi Trò chơi và một số trường có các trường bổ sung.

Gửi vào trở thành vô hình
Khi một đối tượng trò chơi không còn hiển thị trong bất kỳ máy ảnh nào trong cảnh, thành phần này sẽ kích hoạt và gửi lệnh. Kịch bản lệnh này gửi lệnh của nó từ cuộc gọi OnBecameInvisible của lớp MonoBehaviour. Tập lệnh này không có trường bổ sung.


Gửi vào được hiển thị
Khi GameObject hiển thị trong bất kỳ camera nào trong cảnh, thành phần này sẽ kích hoạt và gửi một lệnh. Kịch bản lệnh này gửi lệnh của nó từ cuộc gọi OnBecameVisible của lớp MonoBehaviour. Tập lệnh này không có trường bổ sung.

Gửi vào va chạm Enter
Khi GameObject có một va chạm với một đối tượng khác nằm trong (các) lớp được chỉ định, thành phần này sẽ kích hoạt và gửi một lệnh. Kịch bản lệnh này gửi lệnh của nó từ cuộc gọi OnCollisionEnter của lớp MonoBehaviour.Gửi vào va chạm Enter
Khi GameObject có một va chạm với một đối tượng khác nằm trong (các) lớp được chỉ định, thành phần này sẽ kích hoạt và gửi một lệnh. Kịch bản lệnh này gửi lệnh của nó từ cuộc gọi OnCollisionEnter của lớp MonoBehaviour.

Layers: Một LayerMask cho các lớp GameObjects mà đếm cho va chạm để gửi lệnh.
Gửi khi thoát khỏi va chạm
Khi GameObject có một va chạm với một đối tượng khác nằm trong (các) lớp đã chỉ định và sau đó thoát khỏi va chạm đó, thành phần này sẽ kích hoạt và gửi một lệnh. Kịch bản lệnh này gửi lệnh của nó từ cuộc gọi OnCollisionExit của lớp MonoBehaviour.

Layers: LayerMask cho các lớp GameObject có thể gây ra xung đột kích hoạt thành phần gửi lệnh.
Gửi trên Collision Stay
Khi đối tượng trò chơi này có va chạm với một đối tượng khác nằm trong (các) lớp được chỉ định, thành phần này sẽ kích hoạt sau khi thành phần SendOnCollisionEnter đã kích hoạt và đối tượng vẫn còn trong trạng thái va chạm. Kịch bản lệnh này gửi lệnh của nó từ cuộc gọi OnCollisionStay của lớp MonoBehaviour.



Layers: LayerMask cho các lớp GameObject có thể gây ra xung đột kích hoạt thành phần gửi lệnh.
Gửi trên trình kích hoạt Enter
Nếu thành phần này được gắn vào một bộ va chạm kích hoạt, một va chạm với một đối tượng khác trong (các) lớp được chỉ định sẽ làm cho nó kích hoạt và gửi một lệnh. Kịch bản lệnh này gửi lệnh của nó từ cuộc gọi OnTriggerEnter của lớp MonoBehaviour.

Hình ảnh sau đây cho thấy một pad áp lực với một kích hoạt khối lập phương. Send Open hiển thị lệnh được gửi đi, và các mũi tên màu trắng đang hướng tới đối tượng đích.

Layers: LayerMask cho các lớp GameObject có thể gây ra xung đột kích hoạt thành phần gửi lệnh.
Gửi khi thoát kích hoạt
Nếu thành phần này được gắn vào một trigger va chạm, một va chạm với một đối tượng khác trong (các) lớp được chỉ định sẽ làm cho nó kích hoạt và gửi một lệnh khi đối tượng game rời khỏi vùng va chạm. Kịch bản lệnh này gửi lệnh của nó từ cuộc gọi OnTriggerExit của lớp MonoBehaviour.

Layers: Một LayerMask cho các lớp GameObjects tính cho sự kiện kích hoạt để gửi lệnh.
Gửi về kích hoạt lưu trú
Nếu thành phần này được gắn vào một trigger va chạm, một va chạm với một đối tượng khác nằm trong (các) lớp được chỉ định sẽ làm cho nó kích hoạt và gửi một lệnh cho mỗi frame mà đối tượng game nằm trong vùng va chạm. Kịch bản lệnh này gửi lệnh của nó từ cuộc gọi OnTriggerStay của lớp MonoBehaviour.

Layers: Một LayerMask cho các lớp GameObjects tính cho sự kiện kích hoạt để gửi lệnh.

No comments:

Post a Comment