적이 플레이어를 볼 수 있는지 어떻게 알 수 있습니까?


15

선수와 위치가있는 적과 각각의 방향 벡터가 주어지면 상대방이 "볼"수 있는지 어떻게 알 수 있습니까?

즉, 방향이있는 한 위치가 방향이있는 다른 위치의 앞 또는 뒤에 있는지 어떻게 테스트합니까?

내 목적 상 '앞에'는 직접 앞쪽 또는 양쪽 90도를 의미합니다.


11
분명히 해결책은 다른 카메라를 만들고 적의 관점에서 장면을 다시 렌더링 한 다음 플레이어 캐릭터의 결과에 대한 이미지 인식을 수행하는 것입니다.
Riking

가장 단순한 답변상은 ...
OganM

3
Riking의 의견은 농담으로 의도되었지만, 이것은 실제로 공정한 방법 입니다 .NPC 는 플레이어가 게임의 내부 상태에 액세스하는 것이 아니라 게임 상태에 동일한 액세스 권한을 부여합니다.
R .. GitHub 중지 지원 얼음

5
@R .. 네,하지만 어디에 선을 그리나요? P : 논리적 엔드 포인트에이 추론 촬영, NPC 결국 그들은 아마도 합리적 어쨌든 다시 wallhacking 시작하기로 결정 것이라고 지적하는 인간의 존재처럼 연주하고 생각하는 능력 ...으로 지각되고있다
토마스

@ 토마스 : 실제로 나는 당신이 어떤 식 으로든 타협을 할 수 있다고 생각합니다. 시선에 대한 올바른 테스트와 같은 간단한 측정, 특정 거리를 벗어난 물체를 식별하는 기능 등을 제한하는 것은 먼 길을 갈 수 있습니다.
R .. GitHub 중지 지원 얼음

답변:


17

두 벡터의 내적은 서로 마주하는지 여부를 알려줍니다. 첫 번째 벡터는 적의 시야 방향 일 수 있습니다. 두 번째는 플레이어의 위치에서 적의 위치를 ​​가리키는 벡터 여야합니다.

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


아 그래, 나는 그것을 너무 생각하고 있었다. 나는 4 개의 벡터를 저글링하고 있었지만 실제로는 한 플레이어에서 다른 플레이어로 벡터를 원합니다. 비디오는 매우 도움이되었습니다.
izb

나는이 답변에 추가해야한다고 생각 하나 개 중요한 세부 사항은 게임이 또한 사실 (벽 등에 의해 차단되지 않음) 플레이어를 볼 수 있도록하기 위해 레이 캐스트 또는 뭔가를해야 할 것입니다
T. 카일리

1
@ T.Kiley : 실제로 질문에 대한 의견에서 Riking이 제안했습니다. 아니, 그게 농담 인 것 같지 않아 게임이 3D 인 경우 레이 캐스팅은 실제로 공정한 방법입니다. 플레이어와 다른 중요한 오브젝트를 다른 색상으로 렌더링해야한다는 점을 제외하고는 적의 관점에서 검은 텍스처의 모든 오브젝트가있는 장면을 다시 렌더링하십시오. 조명과 음영을 비활성화하십시오. 결과 버퍼가 완전히 검은 색이 아닌 경우, 누군가가 적의 시야에 있다는 것을 알고 색상을 사용하여 그들이 어떤 물체인지 식별 ​​할 수 있습니다.
Lie Ryan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.