0
Unity에 아주 새롭고 지난 며칠 동안 Raycasting으로 놀아 왔습니다. 레이크 캐스트가 의미하는 라인이이 문제가 발생했음을 감지하지 못하는이 문제가 발생했습니다. 그래서 Raycast 라인이 객체를 쳤을 때 단순히 HIT를 콘솔에 표시하여 이것이 작동하고 있음을 보여주기를 원합니다. 나는 그것이 작동하지 않는 이유는 내가 디버그를 통해보고있는 라인과 실제로 사용되는 라인 때문이라는 생각이 들었다.Raycast는 타격을받는 개체의 단결을 감지하지 못합니다. C# 2d
코드는 다음과 같습니다
void rayCast()
{
if (player.transform.position.x <= enemy.transform.position.x)
{
RaycastHit2D hitLeft = Physics2D.Raycast(transform.position, -transform.right, rayDistance, 1 << LayerMask.NameToLayer("Player"));
Vector3 left = transform.TransformDirection(Vector3.left);
Debug.DrawRay(transform.position, left * rayDistance, Color.green);
if (hitLeft.collider != null)
{
Debug.Log("Player is within range");
}
else
{
Debug.Log("out of range");
}
}
if (player.transform.position.x >= enemy.transform.position.x)
{
RaycastHit2D hitRight = Physics2D.Raycast(transform.position, transform.right, rayDistance, 1 << LayerMask.NameToLayer("Player"));
Vector3 right = transform.TransformDirection(Vector3.right);
Debug.DrawRay(transform.position, right * rayDistance, Color.green);
if (hitRight.collider != null)
{
Debug.Log("Player is within range");
}
else
{
Debug.Log("out of range");
}
}
}
가 사전에 어떤 도움을 주셔서 감사합니다.
제안 해 주셔서 감사합니다. 왼쪽과 오른쪽으로 전환하는 코드를 업데이트했지만 여전히 운이 없었습니다. – Anonymous5642
커스텀 콜리 전 레이어'LayerMask.NameToLayer ("Player")를 정의했음을 알았습니다. 그렇다면 가면을 없애고 raycast를 인쇄하여 어디로 가는지 확인하십시오. – code11
나는 레이어가 정의되었는지 확인했다. 그러나 문제는 그것이 항상 적과 충돌했다는 것이었다. (레이 캐스트가오고있는 스프라이트) 충돌하는 부분을 체크하지 않았다고 생각했다. 이제는 수정되었다. 많은 도움을 주셔서 대단히 감사합니다. – Anonymous5642