Làm thế nào để tôi biết nếu kẻ thù của tôi có thể nhìn thấy người chơi của tôi?


15

Đưa ra một người chơi và một kẻ thù có vị trí, và đưa ra vectơ chỉ đường của mỗi người, làm thế nào tôi có thể biết nếu một người có thể "nhìn thấy" người kia?

Nói cách khác, làm cách nào để kiểm tra nếu một vị trí có hướng ở phía trước hoặc phía sau vị trí khác có hướng?

Đối với mục đích của tôi, 'phía trước' có nghĩa là trực tiếp ở phía trước, hoặc 90 độ về hai phía.


11
Rõ ràng giải pháp là tạo ra một camera khác và kết xuất lại cảnh theo quan điểm của kẻ thù, sau đó thực hiện nhận dạng hình ảnh trên kết quả cho nhân vật người chơi.
Đi xe đạp

Giải thưởng câu trả lời đơn giản nhất thuộc về ...
OganM

3
Mặc dù nhận xét của Riking có thể được coi là một trò đùa, đây là cách thực sự công bằng - mang lại cho các NPC quyền truy cập tương tự vào trạng thái trò chơi mà người chơi sẽ có thay vì cho phép họ truy cập vào trạng thái nội bộ của trò chơi.
R .. GitHub DỪNG GIÚP ICE

5
@R .. Vâng, nhưng bạn vẽ đường này ở đâu? Đưa lý do này đến điểm cuối hợp lý của nó, cuối cùng NPC trở nên nhạy cảm với khả năng chơi và suy nghĩ như một con người ... tại thời điểm đó, họ có thể sẽ quyết định bắt đầu một lần nữa một cách hợp lý: p
Thomas

@Thomas: Trong thực tế tôi nghĩ bạn có thể thực hiện một số thỏa hiệp, xấp xỉ mức độ thông tin họ sẽ có với tư cách là một người chơi mà không gặp rắc rối khi thực hiện theo cách đó. Các biện pháp đơn giản như kiểm tra chính xác đường ngắm, hạn chế khả năng xác định vật thể vượt quá một khoảng cách nhất định, v.v. có thể đi một chặng đường dài.
R .. GitHub DỪNG GIÚP ICE

Câu trả lời:


17

Sản phẩm chấm của hai vectơ có thể cho bạn biết nếu chúng đối mặt với nhau hay không. Vectơ thứ nhất có thể là hướng kẻ thù xem hướng thứ hai nên là vectơ chỉ từ vị trí của người chơi đến vị trí của kẻ thù.

https://www.youtube.com/watch?v=Q9FZllr6-wY


À đúng rồi, tôi đã suy nghĩ quá rồi. Tôi đã tung hứng 4 vectơ, nhưng thực sự tôi muốn vectơ từ người chơi này sang người chơi khác. Video rất hữu ích, cảm ơn.
izb

Một chi tiết quan trọng tôi nghĩ nên được thêm vào câu trả lời này là trò chơi cũng nên thực hiện một chương trình phát sóng hoặc một cái gì đó để đảm bảo rằng trên thực tế họ có thể nhìn thấy người chơi (không bị chặn bởi các bức tường, v.v.)
T. Kiley

1
@ T.Kiley: điều đó thực sự đã được Riking đề xuất trong phần bình luận cho câu hỏi. Không, tôi không nghĩ đó là một trò đùa. Nếu trò chơi của bạn là 3D, raycasting thực sự là một cách công bằng để làm điều đó. Chỉ cần quay lại cảnh với tất cả các đối tượng trong kết cấu màu đen, từ quan điểm của kẻ thù, ngoại trừ người chơi và các đối tượng quan trọng khác sẽ được hiển thị trong một số màu khác. Hãy chắc chắn để tắt ánh sáng và bóng. Nếu bộ đệm kết quả không hoàn toàn màu đen, thì bạn biết rằng ai đó đang ở trong tầm nhìn của kẻ thù và bạn có thể sử dụng màu sắc để xác định chúng là đối tượng nào.
Lie Ryan
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.