Vì vậy, tôi đã gặp một vấn đề trong trò chơi mà tôi đang làm việc, nhưng dường như đó là một điều khá cơ bản có thể xuất hiện trong rất nhiều trò chơi.
Trò chơi của tôi yêu cầu một số chức năng chơi trò chơi xảy ra tại một thời điểm rất cụ thể trong khi hoạt hình nhân vật. Và như tiêu đề đã nói, tôi tự hỏi một số kỹ thuật tốt và chiến lược cơ bản để đồng bộ hóa các sự kiện / chức năng / hành động liên quan đến trò chơi với các điểm cụ thể trong hoạt hình của nhân vật là gì.
Dưới đây là một số ví dụ đơn giản về những gì tôi đang nói về các loại trò chơi khác nhau:
Nhân vật của bạn tải lại súng của họ trong một game bắn súng . Nhân vật của bạn phát hoạt hình 'tải lại' của anh ấy / cô ấy, nhưng điều quan trọng là chức năng thiết lập biếnAmmo hiện tại chỉ được gọi vào đúng thời điểm sau khi tạp chí bị tráo đổi và súng được bắn. Đây có thể là một số điểm ở giữa của hoạt hình tải lại.
Trong một game nhập vai theo lượt, các nhân vật của bạn đứng thành hàng đối diện với hàng kẻ thù. Khi được lệnh tấn công, một trong những nhân vật của bạn chạy / nhảy lên một trong những kẻ thù và chém thanh kiếm khổng lồ của họ trước khi chạy / nhảy trở lại vị trí đứng của họ. Bạn muốn chắc chắn rằng kẻ thù bị hư hại tại thời điểm chính xác mà hoạt hình chém được phát - một số điểm giữa chạy lên và chạy trở lại.
Trong một trò chơi lén lút , nhân vật của bạn có thể lén lút và tương tác với máy tính và các nút trên thế giới. Có thể có một nút tắt nguồn cung cấp năng lượng cho đèn của tiền đồn mà bạn đang xâm nhập. Khi nhấn nút hành động, nhân vật của bạn sẽ vươn ra và nhấn nút và sau đó trở về trạng thái nhàn rỗi. Bạn muốn đèn tắt ở điểm chính xác trong hình động 'Push_button' khi nhấn nút.
Phải thừa nhận rằng trường hợp cụ thể của tôi giống như ví dụ thứ hai , trong đó tôi đã tạo ra một hình ảnh động trong đó nhân vật theo lượt của tôi lao về phía trước trong một cuộc tấn công và tôi muốn thiệt hại được áp dụng vào đúng thời điểm mà hoạt hình dường như đang tiếp xúc . Bởi vì trò chơi của tôi sử dụng hệ thống theo lượt (hãy tưởng tượng thứ gì đó như Final Fantasy hoặc Fire Badge), tôi muốn sát thương / hồi máu / ma thuật / v.v. được áp dụng vào đúng thời điểm trong mỗi hoạt hình nhân vật mặc dù tôi không thực sự sử dụng va chạm / hitboxes.
Tôi nên đề cập rằng tôi đang tạo trò chơi của mình trong một công cụ trò chơi phổ biến và ngay bây giờ tôi đang xử lý việc này bằng cách sử dụng các sự kiện hoạt hình của họ hoặc thông báo để đạt được kết quả gần với kết quả mong muốn - nhân vật của tôi thực hiện một lệnh nhất định và kích hoạt hoạt hình dành riêng cho lệnh (ví dụ: 'Attack_command') và các tài sản hoạt hình cho mỗi một lệnh của tôi phải bao gồm một sự kiện hoạt hình / thông báo 'gọi lại' vào các ký tự của tôi Hàm ExecuteCommand. Nói cách khác - nhân vật bảo hoạt hình tấn công phát, và sau đó hoạt hình tấn công phát ra một sự kiện / thông báo gọi lại vào nhân vật vào đúng thời điểm trong hoạt hình khi cần phải xử lý thiệt hại.
Thành thật mà nói, điều này hoạt động ngay bây giờ, nhưng nó chỉ cảm thấy sai - như tôi đang thiếu một phần của bức tranh lớn hơn ở đây! Một phần lý do khiến phương pháp này cảm thấy sai là vì nó kết hợp logic trò chơi với các tài sản hoạt hình; nếu tài sản hoạt hình của tôi quên bao gồm một sự kiện / gọi lại ExecuteCommand (), lệnh sẽ không thực thi đúng và cần thêm mã để kiểm tra xem hoạt ảnh lệnh đã kết thúc mà không thực hiện lệnh. Nó lộn xộn và điều đó có nghĩa là lối chơi của tôi có sự phụ thuộc kỳ lạ vào tài sản của nó. Tất nhiên tôi muốn thiệt hại xảy ra tại một điểm cụ thể trong hoạt hình tấn công của mình, nhưng tôi cảm thấy thực sự kỳ lạ khi gọi mã trò chơi bên trong tài sản hoạt hình ..
Vì vậy, tôi đang nhìn gì ở đây? Một số kỹ thuật chung tốt để xử lý các loại tình huống này trong đó bạn muốn một số hành động chơi trò chơi quan trọng nhất định xảy ra tại thời điểm cụ thể trong hoạt hình là gì?
Chỉnh sửa: Để làm rõ, đây không phải là một câu hỏi dành riêng cho động cơ và tôi cũng không tìm kiếm các thiết kế / kỹ thuật dành riêng cho động cơ. Tôi quan tâm đến các kỹ thuật đồng bộ hóa hoạt hình / trò chơi nói chung mà người ta có thể sử dụng trong các dự án trò chơi của bạn bất kể công nghệ được sử dụng.