Làm thế nào để tránh spaghetti trong hoạt hình?


9

Tôi đang làm việc với các hoạt hình trong Unity và cho đến nay tôi chỉ thực hiện bốn (Lên xuống Trái và Phải) và cửa sổ hoạt hình của tôi trông theo ... nhập mô tả hình ảnh ở đây

Vấn đề là nếu tôi đang di chuyển lên, tôi muốn anh hùng ở lại tìm kiếm không đi đến 'trung lập nhàn rỗi' (hoặc tuy nhiên anh ta đã bắt đầu), nhưng điều đó có nghĩa là tôi có 4 vị trí nhàn rỗi ... và mỗi người trong số họ có thể chuyển sang Lên, Xuống , Trái hoặc Phải và họ đi theo cấp số nhân với mỗi hành động bổ sung ...

Điều đó làm tôi cảm thấy như mình đang làm gì đó sai ....

Có cách nào tốt hơn để thực hiện chuyển đổi giữa các hành động khác nhau?


Tôi đã cố gắng làm điều này trong một thời gian dài. Đáng buồn thay, kết luận của tôi là, bạn không thể. Animator LUÔN biến thành một mạng lưới spaghetti và chúng ta phải sống với nó. Tuy nhiên, hãy xem video này, nó giúp youtube.com/ Hãy
Nevermind

Câu trả lời:


9

Bạn có thể giải quyết loại vấn đề này với BlendTrees (nói chung ý tưởng khôn ngoan của nó là thường dựa vào cây pha trộn). Blend cây là một trạng thái đa hoạt hình dựa trên (các) tham số (float) quyết định hình ảnh động nào mà nó hiện đang hoạt động (hoặc thay vào đó, hình ảnh động kết quả có thể là sự pha trộn của một số hình ảnh động). Ngay cả khi các hình động không được trộn lẫn, nhưng được hoán đổi, hoán đổi vẫn xảy ra giữa hoạt hình (nghĩa là nếu hoạt hình "thoát" ở mức 35% thì hình ảnh mới được phát từ 35% trở đi). Từ "bên ngoài", tất cả điều này được ẩn đi như thể đó là một trạng thái đơn giản / duy nhất.

Ví dụ: bạn có một cây pha trộn với 8 hình động sprite (nhàn rỗi với 4 hướng chính và 4 đường chéo). Có 2 tham số trong cây pha trộn này - "ngang" và "dọc". Và dựa trên 2 tham số đó, cây pha trộn sẽ quyết định hoạt hình nào sẽ phát. Dựa trên tham số "ngang", cây pha trộn sẽ chọn giữa hoạt ảnh trái / phải và tham số "dọc" sẽ quyết định hoạt ảnh từ trên xuống. Sau đó, khi kết hợp bạn sẽ có tất cả 8 hình động với các đường chéo (đó là ý tưởng tương tự đằng sau các phím điều khiển / cần điều khiển).

nhập mô tả hình ảnh ở đây

Có một chút khó hiểu vì vậy, ngay cả khi StackExchange không thích các liên kết, tôi sẽ liên kết video ví dụ ngắn mà tôi đã tạo. Lưu ý phần trên bên phải của màn hình. Các chấm màu xám là "trạng thái" / hình động và hoạt động là một trạng thái đóng với dấu chấm màu đỏ. Như đã nói ở phần đầu, nó có thể phức tạp hơn nữa và mỗi hình ảnh động có ảnh hưởng / sức mạnh dựa trên khoảng cách của nó đến chấm đỏ, dẫn đến sự pha trộn giữa một số hình ảnh động.

Từ bên ngoài chỉ có một trạng thái (cây pha trộn) và khi bạn áp dụng cùng một khái niệm cho việc đi bộ và tấn công, bạn sẽ chỉ có 3 trạng thái được liên kết.

Blend Tree được tạo bằng cách nhấp chuột phải vào vùng Animator trống Tạo trạng thái -> Từ New Blend Tree. Từ đó, tất cả nằm trong Thanh tra. Với cây pha trộn được chọn, bạn có thể chọn loại cây pha trộn (1D, 2D, v.v.), thêm hình động, định vị chúng (liên quan đến các giá trị tham số) và chọn tham số điều khiển.

Nếu bạn muốn biết thêm thông tin về Blend Tree tiếp theo là các video từ Unity - Unite 2016Unity Tutorials .


2

Vấn đề ở đây là bạn đang cố gắng gắn kết mọi thứ lại với nhau thay vì sử dụng trình kích hoạt để chuyển đổi giữa các chế độ chờ. Bạn nên chọn hoạt hình nhàn rỗi bằng cách sử dụng loại điều kiện if-other hoặc trường hợp chuyển đổi. Tôi đã tạo một sơ đồ trông gọn gàng hơn nhiều (giả sử một trong số đó là trường hợp mặc định):

nhập mô tả hình ảnh ở đây

Thông tin bổ sung:

Hãy xem Thông số hoạt hình về cách đặt tham số cho trình hoạt hình để nhận biết, Máy trạng thái để kết hợp hoạt ảnh với nhau, Hành vi của máy trạng thái để biết cách kiểm tra các biến bạn đã đặt.


Xin chào John, nhưng làm thế nào để tôi thực sự làm điều đó? Tại sao tôi lại sử dụng trình kích hoạt để chuyển đổi giữa các idles hoặc chuyển đổi giữa các idle? Làm thế nào để tôi chọn animaton nhàn rỗi bằng cách sử dụng nếu khác? Cũng trong sơ đồ tại sao tôi sẽ chuyển sang idleleft và sau đó sang trái và không rời đi và đi vào idleleft chờ hành động tiếp theo, hay điều này sẽ là cách khác?
Matas Vaitkevicius

@MatasVaitkevicius Bạn có thể đặt và kiểm tra các biến ở cuối hoặc bắt đầu hoạt ảnh. Bạn có thể tạo một hình ảnh động trống mà không làm gì ngoài việc kiểm tra trường hợp và sau đó chuyển hướng nó đến phần tiếp theo hoặc tạo một lớp trừu tượng ra khỏi nó. Tôi đã bao gồm một vài liên kết đến các hướng dẫn để biết thêm.
John Hamilton

Vậy làm thế nào để tôi thực hiện nếu khác với các tham số sẽ chuyển đổi các chuyển đổi? Không có ví dụ nào về tất cả các cơ chế bạn liên kết chỉ thực hiện chuyển đổi thủ công như tôi đã làm trong câu hỏi ....
Matas Vaitkevicius

@MatasVaitkevicius Bạn thực sự nên tìm kiếm một chút trước tiên: gamedev.stackexchange.com/questions/103611/ Kẻ
John Hamilton

Nhưng đây là cách tôi đã làm nó. kích hoạt các hành động kích hoạt và bắt đầu hoạt hình sau đó nó chuyển sang trạng thái chờ cho hướng đó ... Bây giờ bạn đang nói gì (nếu tôi hiểu đúng về bạn) rằng tôi có thể sau khi hoạt hình thay vì chuyển sang chế độ chờ để chuyển sang cơ chế đó sẽ chọn không sử dụng phù hợp cho tôi ... nhưng tôi chưa thấy một cơ chế như vậy ở bất cứ đâu, bạn có thể sao chép nó vào câu trả lời của mình không ....
Matas Vaitkevicius
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.