Tàu vũ trụ khiên lửa


7

Tôi đang cố gắng thực hiện một hệ thống theo đó một "khiên lửa" sẽ được hiển thị mỗi khi một viên đạn tác động lên khiên. Chiếc khiên giống như trong Chiến tranh giữa các vì sao, nơi nó giống như một lớp da xung quanh tàu vũ trụ, thay vì một bong bóng đơn giản.

Vấn đề tôi gặp phải là xác định làm thế nào để tạo hiệu ứng flare đơn giản trong đó đạn bắn vào tấm khiên. Tôi có thể xác định điểm Vector2 nơi lá chắn bị bắn trúng. Ngay bây giờ, tôi có thể hiển thị toàn bộ khiên bất cứ khi nào nó hoạt động tốt.

Vấn đề như tôi thấy, là bằng cách nào đó tôi cần che đi tấm khiên, ngoại trừ một vài pixel xung quanh điểm va chạm. Hoặc là vậy, hoặc tôi đang đi về điều này theo cách hoàn toàn sai lầm.

Những gì tôi có thể làm cho đến nay là vẽ toàn bộ lá chắn:

Giao hàng với Whole Shield

Điều tôi cần là có thể vẽ một mảnh khiên ở điểm va chạm:

Khiên với mảnh khiên

Bất kỳ trợ giúp sẽ được đánh giá cao.


Sẽ thật tuyệt nếu bạn thêm hình ảnh về mục tiêu của bạn - đó có phải là trò chơi 2D không?
wonderra

1
Sẽ không đơn giản hơn để tạo hiệu ứng hạt tại điểm tác động phải không? Một hình ảnh về những gì bạn đang cố gắng để đạt được thực sự có thể giúp đỡ.
Felsir

Câu trả lời:


4

Bạn có thể làm điều này thông qua mặt nạ trên cpu nếu bạn chưa muốn sử dụng shader.

Bạn sẽ cần những tài nguyên sau:

  • Kết cấu tàu vũ trụ (không nhìn thấy lá chắn, bên trái )
  • Kết cấu khiên (chỉ có thể nhìn thấy khiên, cần vừa với tàu, ở giữa )
  • Kết cấu có thể chỉnh sửa trống (pixmap) mà bạn có thể vẽ lên (cùng kích thước với kết cấu khiên, phải )
  • Điểm tác động

Bạn có thể vẽ con tàu của bạn như bình thường. Sau khi vẽ con tàu, bạn cần sao chép các pixel họa tiết hình khiên ở một khoảng cách nhất định (một vài pixel, có thể là 3 hoặc 4) từ điểm va chạm, vào kết cấu trống của bạn và hiển thị họa tiết đã chỉnh sửa này lên trên tàu. Bạn nên lặp lại việc sao chép cho mọi điểm tác động, chỉ cần sao chép mọi thứ vào cùng một kết cấu.

Hình ảnh này hiển thị các kết cấu từ trái sang phải theo thứ tự như trong danh sách của tôi. (các phần màu đỏ chỉ để trực quan hóa các đường viền và công cụ)

sự miêu tả

Nếu bạn muốn nó cũng nhanh, bạn cần kết xuất nó với một shader mặt nạ pixel tùy chỉnh, nó sẽ đơn giản như quy trình này, nếu bạn biết cách sử dụng shader, nhưng tôi không biết làm thế nào để giúp bạn ở đó .

Chỉnh sửa: Một cách dễ dàng để điều này chạy theo cách gần đúng là chỉ cần vẽ hiệu ứng hạt tại điểm tác động như Felsir đề xuất, cũng được quay về phía trung tâm của con tàu (hoặc chỉ là trung tâm của kết cấu). Bạn có thể sẽ không thấy sự khác biệt lớn giữa điều này và kết cấu khiên đeo mặt nạ, nó cũng sẽ nhanh hơn rất nhiều.


3

Bạn có thể vẽ cái này bằng cách sử dụng hỗn hợp nhân.

BlendState multiplyblend = new BlendState();
multiplyblend.ColorBlendFunction = BlendFunction.Add;
multiplyblend.ColorSourceBlend = Blend.DestinationColor;
multiplyblend.ColorDestinationBlend = Blend.Zero;

Tạo một bitmap của một vòng tròn màu trắng trong nền đen (mặt nạ). Màu trắng là một phần của lá chắn nên được nhìn thấy. Vì bạn biết điểm tác động, bạn biết nơi để đặt tâm của vòng tròn. Vẽ khiên, nhân đồ họa với vòng tròn màu trắng (vẽ hiệu quả mọi thứ khác màu đen). Sau đó thêm sprite tàu vũ trụ trong Blendmode bình thường.

Hãy nhớ rằng bạn sẽ cần SpriteSortMode.Immediateđiều này để làm việc.

Nếu bạn có nhiều khiên / tàu, hãy chuẩn bị tất cả các vòng tròn màu trắng trên một kết cấu có kích thước màn hình và có hiệu ứng được vẽ một lần. Mặt nạ phải ở trên nền trong suốt cho điều này - vì mục tiêu ám chỉ mặt nạ sẽ có màu đen:

  1. Vẽ tất cả các lá chắn trên màn hình
  2. Xóa mục tiêu ám chỉ mặt nạ với màu đen
  3. Vẽ tất cả các vòng tròn màu trắng nơi các tấm khiên sẽ hiển thị trên mục tiêu kết xuất (tạo hiệu quả một mặt nạ có kích thước màn hình)
  4. Nhân lên màn hình và mặt nạ renderertarget.
  5. Vẽ phần còn lại của các thực thể trò chơi.
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.