if (Box1List.Count == 10 && cubeList.Count<10) { float y; y = Ran[it]; it++; Vector3 Sq10Spawn = new Vector3(-6.3f,y, 0); Vector3 ClonePoint = Sq10Spawn; var targetX = Sq10Spawn.y; ClonePoint.y = targetX - 0.3f; Sq10Spawn = ClonePoint; // 이 부분들은 잘 모르겠어서 위치의 조금 밑에서 캐스트를 쏘기 위해 위칫값 바꿨습니다 RaycastHit2D hit = Physics2D.BoxCast(ClonePoint, new Vector2(3, 0.3f), 0, new Vector2(0, 1), 5f); if (hit.transform != null) { Vector2 hitPoint = hit.point; var targetY = hit.transform.position.y; hitPoint.y = targetY + 0.3f; Sq10Spawn = hitPoint; // 대충 박스캐스트를 위로 쏴서 있으면 위치를 0.3더한다는 느낌? } GameObject clone = Instantiate(Sq10, Sq10Spawn, Quaternion.identity); clone.name = "Sq10"; cubeList.Add(clone);
동그라미 친 위치에 같은 직사각형 물체가 생성되게 코드를 짰는데
이 위치에 직사각형이 이미 있으면
그 감지된 물체에서 0.3 위에 생성되게 하고싶은데
잘 안되는데 진짜 코딩초보라 어떤게 잘못된지 모르겠는데 도와주실수 있습니까 ㅜㅜㅜㅜ
1. 물체가 있는지 감지하는 기능을 만들어야한다.
아 엔터치니까 댓글 만들어지는지 몰랐네 그냥 계속 적는다. 2. 물체가 있으면, 그 오브젝트 위치의 y값보다 높은 y값으로 위치를 설정한다.
박스캐스트라는 것을 써봤는데 안되나요 ?
근데 여기에서 궁금한게 있는데 만약 2개 이상 직사각형이 쌓여도 그 다음에 만드는건 계속 맨 위에 위치하게끔 하고싶다는거야?
네 맞아요 ㅠㅠ!!
boxcast 물론 써도 됌. 어쨋든 가장 위쪽에 위치하게끔 하고 싶은 거니까, 가장 위쪽에 있는 오브젝트를 얻어오기 위해서는 맨 위에서 아래쪽으로 ray를 쏘던 box를 쏘던 해서 얻어와야지. 여튼 boxcast라고 이상한건 아님
먼가 써도 제대로 위로 생성이 안되기는 하지만 답변 감사드립니다 !!
근데 코드 보는데 조금 걸리는게 있다. ClonePoint 의 y값을 빼주는 이유는, 오브젝트를 위쪽에 위치하게 하고 싶어서 빼는건가?? 보통 일반적으로 카메라 pitch를 90도 이상으로 뒤집지 않는 이상 기본적으로 -가 아래쪽일텐데??
Ray 쏘는 방향도 아래쪽을 향하려면 일반적으로 Vector2(0, -1) 를 사용할텐데, 왜 거꾸로 뒤집혀져있지.. 혹시 카메라를 뒤집은거야?
지금 보니까, 내가 착각하고 있던게 있었음. 카메라가 뒤집힌게 아니라, 아래쪽에서 위쪽으로 ray를 의도적으로 쏘고 있었기 때문에 그렇게 했었구나. 근데 맨 위 오브젝트를 감지하려면 내가 생각하기엔 맨 위에서 아래쪽으로 쏴야되는게 맞다고 봄.
ClonePoint에서 y값을 빼는 이유는 안정적으로 밑에서 위로 확실히 쏘기 위함이었는데 제가 잘 몰라서 마음대로 한겁니다 ...흑흑 그리고 지금 문제가 위로 쏴도 이미 생긴 것이 레이를 중간에 막아서 결국엔 2번째에 생긴거랑 같은 위치에 무한 생성중인데 위에서 아래로 해도 같지 않나요 ??
내가 문제를 제대로 이해했다면 그 문제는 아마 ray의 시작지점을 잘못 설정한거같은데, ray의 시작지점을 Vector2(0, 1000) 이런식으로 무한히 높은 값으로 설정하고, ray를 아래쪽 방향으로 굉장히 길게 쏘면 해결돼.
와 제가 생각을 잘못했네요 위에서 쏘더라도 생겨나는건 다른문제였는데 정말 감사합니다 !!! 큰 깨달음을 얻었어요
굿굿 파이팅~