코딩이라곤 파이썬과 C++로 학부생 수준의 물리학 시뮬레이션만 돌리다가 유니티 교양과목으로 수강하고 피똥 싸고있는 머학생입니더
유니티로 만들려는게
1. 바둑판처럼 자신이 원하는 크기의 2차원 lattice를 생성하고(예를 들면 10을 입력하면 10x10 lattice 생성)
2. 그 lattice들의 꼭짓점 중 하나를 클릭하면 그 위치에 작은 구(sphere)를 생성하고 그 구의 특성을 숫자 입력을 통해 부여하는 (예를 들면 꼭짓점을 클릭하여 작은 구를 생성하고 그 구의 특성을 입력) 것임
걍 요약하자면 자신이 원하는 크기의 바둑판 만들고 거기에 바둑알 두는걸 생각중이라고 생각하면 됨
(물론 실제론 그 바둑알은 원자이고 그 바둑알에 특성을 부여한다는게 전하량을 부여하는거긴 한데.... 물리학과 관련된 복잡한건 제가 알아서 하겠습니더)
일단 클릭으로 그 위치에 구를 생성하는 코드부터 짜려고 ray인가 뭐시기하고 prefab에 있는 구를 인터넷 코드 참조에서 짜봤는데 어떻게 해도 실패해서 여기 왔엉
살려주십쇼
1. 타일 프리팹을 만들고 유니티 gridLayoutGroup을 쓰던가 직접 코딩한다
2. 꼭짓점 처리하는 건 나도 몰라서 넘어가고 마우스 클릭은
3. using unityengine.eventSystem 에서 OnPointerClick이라는 인터페이스를 가져오고 누르면 그 위치에 바둑알 프리팹 나오게 하셈
오 감사합니다
4. UI용 한정 이벤트라 이미지 컴포넌트에 Raycast에 대해 알아보는 거 추천드리고 UI로 타일을 안 만들 생각이라면 내 조언한 거 죄다 무시하셈
1. 카메라 원점 -> 마우스 클릭지점(관련 함수가 있을것) 방향 벡터, 바둑판의 Plane으로 벡터와 평면 교차 지점 계산 2. 격자의 각 점 주변 범위를 클릭해야 되는지, 클릭만 하면 가장 가까운 격자 점을 찾는지에 따라 1.의 교차 지점으로부터 격자 점 위치를 계산 3. 위치를 알면 구를 생성하는건 맘대로
ㄳㄳ
RaycastHit hit; if (Input.GetMouseButton(0) && Physics.Raycast(Camera,main.ScrrenPointToRay(Input.mousePosition, out hit)){ if (hit.transfrom.CompareTag("lattice")) Instantiate(prefab, hit.point, Quaternion.identity) }
tag는 유니티에디터 에서 Instector 위에보면 설정하는거있음
코드까지... 정말 감사합니다
오타하나 있는데 mousePosition),out hit) 이거임
방법은 크게 2가지 1. 바둑판에 크게 콜라이더 하나 만들고 클릭한 지점 위치 구해서 가장 가까운 lattice 꼭지점 위치에 구 생성 2. 각 lattice 꼭지점이 콜라이더의 중심이 되게 사각형 콜라이더를 꼭지점 개수만큼 타일로 배치하고 클릭하면 해당 콜라이더에 구 생성
연습겸 공부할겸 개발해볼래 = 1번 콜라이더 존나 많아도 상관없고 조금도 계산 하기 귀찮다 = 2번 갠적으로 전자추천
와 물리학관느 유니티로 별걸 다하네요
물리학과 별거다하는구만