1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public void CreateTrain() { Instantiate(firstTrain, Vector3.zero, firstTrain.rotation); //1량 생성 for (i = 0; i < middleTrain.Length; i++) { if (i == 0) //중간 첫 차량, middle은 child(0)이 forward, (1) = back { middleSpawnPoint = firstTrain.GetChild(0).position + (middleTrain[0].position - middleTrain[0].GetChild(0).position); Instantiate(middleTrain[i], middleSpawnPoint, middleTrain[i].rotation); } else //중간 차량 생성 { middleSpawnPoint = middleTrain[i - 1].GetChild(1).position + (middleTrain[i].position - middleTrain[i].GetChild(0).position); Instantiate(middleTrain[i], middleSpawnPoint, middleTrain[i].rotation); } print(middleSpawnPoint); } } | cs |
프리팹으로 앞, 중간 기차가 있고 중간기차의 자식에 앞, 뒤가 있습니다.
그래서 중간[0].뒤에다가 중간[1].앞을 이어주어서 칙칙폭폭 기차를 만드려고 해여
근데 앞, 중간[0], 중간[1] 까지는 제대로 되는데 중간의 수가 3개부터
앞, 중간[0], 중간[1][2] 이렇게 겹쳐져서 생성됩니다. 왜 그럴까요................???????????????????????
중간 객차가 1,2,3 이 다 메쉬가 다름? Instantiate 는 클론을 만드는 거임 왜 중간 객차는 다 다른 객차 오브젝트를 참조로 클론을 만드는 거임? middleTrain[i] = Instantiate(원본 프리팹, 스폰 좌표..... 이렇게 가야 하지 않음?
다 같은 메쉬인데 그냥 for문 쓴 기념으로 넣어줬슴다... 근데 그건 이상이 없는데 스폰되는 위치가 이상해여
아 이게 middleTrain[0]이 원본이고 [1]부터가 클론이라 클론은 클론의 좌표를 참조할 수 없는건가요?
그니까 middleTrain[i] = Instantiate 해서 스폰 좌표에 생성시켜야 담에 middleTrain[i+1]의 스폰좌표 계산할때 middleTrain[i]의 좌표를 제대로 받아올 수 있잖음? 그냥 Instantiate만 하면 middleTrain[i]의 좌표가 갱신되지 않잖아
middleTrain[i] = Instantiate(중간객차 원본, i번째 중간객차 위치, 각도) 이렇게 만들어야지 middleTrain[i]가 선언되지 그냥 Instantiate(middleTrain[i]...)이렇게 하면 middleTrain[i]의 클론이 생성될 뿐이다
헐 해결했습니다.... 이런 멍청한..... 감사감사....합니다..... 이런...........................
님 덕분에 멋진 기차가 연결됐어여!
나도 지금 만들고있는 광산 카트 달리는 거 끝내면 열차만들거임 같이 잘 만들어봐여