Cỏ cao Unity2D


8

Tôi đang sử dụng Unity để tạo trò chơi 2D từ trên xuống. Mọi thứ đều tuyệt vời cho đến nay, nhưng tôi đã gặp phải một vấn đề mà tôi không giải quyết đúng đắn.

Tôi muốn thực hiện "khu vực cỏ cao" nơi một phần của nhân vật sẽ bị chặn lại.

Một ví dụ trực quan:

Tôi nghĩ về việc làm cho cỏ cao theo từng lớp, nhưng điều đó sẽ tạo ra RẤT NHIỀU đối tượng trò chơi, và quá trình chuyển đổi khi nhân vật di chuyển lên sẽ không đủ suôn sẻ.

Bất cứ ý tưởng về làm thế nào tôi có thể tiếp cận điều này? Tôi nghĩ rằng có thể sử dụng shader tôi có thể đạt được thứ gì đó như thế này, nhưng kiến ​​thức về shader của tôi rất hạn chế, vì vậy tôi thậm chí không biết liệu điều đó có khả thi hay không.


6
Đôi khi bạn cần phải làm việc với rất nhiều đối tượng trò chơi, bạn biết đấy.

Một kiểu hack để tránh nhiều đối tượng trò chơi sẽ là thay thế sprite của người chơi bằng phiên bản "isInGrass" tùy chỉnh (ví dụ rất thô sơ ở đây ) trong khi ở trên cỏ và chỉ cần vẽ nó lên trên. Với một số nghệ thuật đẹp và một chút trong suốt ở phía dưới (để giúp nó hòa quyện với cỏ thực tế), nó có thể trông đủ tốt.
Christian

Tôi đã nghĩ về cách tiếp cận đó, nhưng, ngoài tất cả các công việc sẽ yêu cầu (ít nhất chúng ta cần gấp đôi hoạt hình cho mỗi diễn viên), việc chuyển từ bên ngoài cỏ sang bên trong từ kịch bản bên (trong hình ảnh ví dụ: Hàng trên cùng , cột thứ ba), khi một nửa cơ thể ở bên trong và nửa còn lại ở bên ngoài, kết quả sẽ khá lộn xộn.
Leo

2
Âm thanh như mặt nạ hoặc khuôn tô là những gì bạn cần. Chủ đề này chứa một số thông tin hữu ích. Tiện ích mở rộng này thể hiện những gì tôi đang nói, mặc dù tôi không biết liệu nó có làm đúng những gì bạn cần không.

1
Điều này nghe khá giống như tôi đang tìm kiếm! Tôi sẽ phải làm một số nghiên cứu và thử nghiệm với nó. Nếu tôi quản lý để có một cái gì đó hoạt động, tôi sẽ đăng nó như một câu trả lời.
Leo

Câu trả lời:


1

Tôi đồng ý với @Christian (mặc dù tôi sẽ không gọi đó là hack). Phát hiện điều kiện khi đối tượng sẽ trông khác nhau và sau đó chỉ cần vẽ nó khác nhau. Mỗi một điều trong trò chơi không nhất thiết phải là một "mô hình" về cách thức hoạt động của nó trong "tự nhiên". Đó là một sai lầm tôi đã phạm nhiều lần và vì vậy nó trở thành một câu thần chú đối với tôi. Hãy tự hỏi mình điều này: bạn sẽ đạt được gì khi có bụi cây che khuất người chơi "một cách thực tế" thay vì chỉ vẽ người chơi theo cách họ nên nhìn? Tôi đặt điều này trong dấu ngoặc kép, bởi vì khi cố gắng tưởng tượng điều này sẽ trông như thế nào tôi nghĩ rằng phương pháp che giấu lớp có thể thực sự trông kém hơn.

Nếu mối quan tâm của bạn với cách tiếp cận của @ Christian là trong việc quản lý danh sách "những thứ không có khả năng" mà bạn phải kiểm tra từng khung, thì đây là một sai lầm khác mà tôi đã mắc phải nhiều lần. Tôi khuyên bạn nên "chỉ cần đi với nó" bây giờ và định kỳ kiểm tra xem danh sách đã thực sự kéo dài bao lâu-- và liệu nó có thực sự trở thành vấn đề hay không . Một trong hai điều sẽ xảy ra. Hoặc nó đã không trở thành một vấn đề, trong trường hợp đó - tại sao bạn lại cố gắng giải quyết nó? Hoặc nó có và bạn cần thiết kế một giải pháp (tối thiểu) để giải quyết nó. Đừng cố gắng giải quyết nó bằng cách mô phỏng nó.


0

Cuối cùng tôi đã tìm thấy một giải pháp thỏa mãn! @Thebluefish bình luận chỉ cho tôi đi đúng hướng với mặt nạ.

Ý tưởng là sử dụng một shader vẽ nhân vật trong hai lần:

  • Trong lần đầu tiên, nhân vật được kết xuất bình thường, NHƯNG hoàn toàn ở phía sau bụi rậm.
  • Trong lần thứ hai tôi vẽ lại, sử dụng mặt nạ mà olny vẽ phần trên cùng của nhân vật, trên đỉnh của bụi cây.

Điều này được thực hiện ngay cả khi chatacter không ở trong bụi rậm. Bằng cách này, tôi không phải phát hiện va chạm với các bụi cây, và nó cũng giúp quá trình chuyển đổi bên trong bụi cây diễn ra suôn sẻ trong các trường hợp giới hạn như thế này:

Một nửa nhân vật ở ngoài bụi rậm được hiển thị trong lượt đầu tiên. Nửa còn lại sẽ bị bụi cây che khuất hoàn toàn.

Trong lần thứ hai, nhân vật đeo mặt nạ sẽ được kết xuất lại. Phần bên ngoài bụi cây sẽ giữ nguyên, nhưng phần bên trong bụi cây sẽ được hiển thị trên cùng với mặt nạ trên đỉnh của bụi cây, làm cho nó trông giống như bên trong bụi cây.


-1

Bạn có thể phát hiện nhân vật có hoặc không có trong cỏ. Sau đó, chỉ vẽ nửa trên của nhân vật.


Tôi tin rằng câu trả lời này đã được đề xuất. Bạn có chi tiết bổ sung để thêm vào câu trả lời của bạn?
MichaelHouse
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.