개발 노트

[유니티 윷놀이] 윷놀이 판 갈림길 이동과 표시 본문

유니티

[유니티 윷놀이] 윷놀이 판 갈림길 이동과 표시

알 수 없는 사용자 2024. 2. 23. 14:41

이전에 포스팅한 윷놀이 판 배열 설정이 있었다.

 

하지만 모든 블럭을 0~29번으로 나열 한것뿐이지 이 배치한 블럭이 윷놀이 갈림길 까지 고려할 수 없다는 것이다.

 

나의 블럭 배치 방식은 바깥 블럭 차레대로 0~19번으로 설정하고 갈림길 블럭을 29번까지 마무리 지었다.

 

그렇다면 말이 윷 값이 나와서 배열로 움직이면 갈림길 지점에 있어도 지름길을 타지 못하고 배열의 순서대로만 이동된다는 점이다.

 

그래서 단순하면서도 무식한 방식으로 이 갈림길로 이동할 수 있도록 설정했다.

 

 if (currentWaypointIndex == 5)

 {
     if ((steps == 1 || steps == 2 || steps == 3 || steps == 4 || steps == 5))
     {
         currentWaypointIndex = 19 + steps;
     }
     else if (steps == -1)
     {
         currentWaypointIndex += steps;
     }

 }
 else if (currentWaypointIndex == 1 && steps == -1)
 {
     currentWaypointIndex = 29;
 }
 else if (currentWaypointIndex == 10)
 {
     if ((steps == 1 || steps == 2))
     {
         currentWaypointIndex = 24 + steps;
     }
     else if (steps == 3)
     {
         currentWaypointIndex = 19 + steps;
     }
     else if (steps == 4 || (steps == 5))
     {
         currentWaypointIndex = 23 + steps;
     }
     else if (steps == -1)
     {
         currentWaypointIndex += steps;
     }

 }
 else if(currentWaypointIndex == 15 )
 {
     if(steps ==1 || steps ==2 || steps == 3 || steps == 4)
     {
         currentWaypointIndex = 15 + steps;
     }
     if(steps == 5)
     {
         currentWaypointIndex = 29;
     }
     else if(steps == -1)
     {
         currentWaypointIndex += steps;
     }
 }
 else if(currentWaypointIndex == 16 && (steps == 4 || steps ==5 ))
 {
     currentWaypointIndex = 25 + steps ;
 }
 else if(currentWaypointIndex == 17 && (steps == 3 || steps == 4 || steps == 5))
 {
     currentWaypointIndex = 26 + steps;
 }
 else if (currentWaypointIndex == 18 && (steps == 2 || steps == 3 || steps == 4 || steps == 5))
 {
     currentWaypointIndex = 27 + steps;
 }
 else if (currentWaypointIndex == 19 && (steps == 1||steps == 2 || steps == 3 || steps == 4 || steps == 5))
 {
     currentWaypointIndex = 28 + steps;
 }
 else if(currentWaypointIndex == 20)
 {
     if (steps == -1)
     {
         currentWaypointIndex = 5;
     }
     else if(steps == 5)
     {
         currentWaypointIndex = 15;
     }
     else
     {
         currentWaypointIndex += steps;
     }
     
 }
 else if(currentWaypointIndex == 21 && (steps == 4 || steps ==5))
 {
     currentWaypointIndex = 12 + steps -1;
 }
 else if (currentWaypointIndex == 22)
 {
     if(steps == -1)
     {
         currentWaypointIndex = 21;
     }
     else if(steps == 1 || steps == 2 || steps == 3 || steps == 4 || steps == 5)
     {
         currentWaypointIndex = 27 + steps - 1;
     }
     
 }
 else if(currentWaypointIndex == 23 && ( steps ==2 || steps == 3 || steps == 4 ||steps == 5))
 {
     currentWaypointIndex = 14 + steps -1;
 }
 else if(currentWaypointIndex == 24 && (steps == 1 || steps == 2 || steps == 3 || steps == 4 || steps == 5))
 {
     currentWaypointIndex =15 + steps -1;
 }
 else if ( currentWaypointIndex == 24)
 {
     currentWaypointIndex = 15 + steps - 1;
 }
 else if(currentWaypointIndex == 25)
 {
     if(steps ==1)
     {
         currentWaypointIndex += steps;
     }
     else if(steps == 2)
     {
         currentWaypointIndex = 20 + steps;
     }
     else if (steps == 3 || steps ==4 || steps == 5)
     {
         currentWaypointIndex = 24 + steps;
     }
     else if(steps == -1)
     {
         currentWaypointIndex = 10;
     }
 }
 else if (currentWaypointIndex == 26)
 {
     if (steps == 1)
     {
         currentWaypointIndex = 21 + steps;
     }
     else if (steps == 2 || steps == 3 || steps == 4 || steps == 5)
     {
         currentWaypointIndex = 25 + steps;
     }
 }
 else if (currentWaypointIndex == 27 && steps == -1)
 {
     currentWaypointIndex = 22;
 }
 else if (currentWaypointIndex == 29 && steps == -1)
 {
     currentWaypointIndex = 19;
 }
 else
 {
     // 갈림길을 지나지 않는 경우에만 steps를 더해줍니다.
     currentWaypointIndex += steps;
 }

 

말들을 움직이는 함수 중  블럭마다의 이동 판단을 보여주는 조건문이다 . 노가다로 작성한거지만 블럭 마다의 위치 현재 위치를 계속 확인하면서 윷을 던져 값이 나왔을대 그 값만큼 이동이 가능해진다.

 

이것만이 정답은 아니고 다른 방법으로도 더 짧고 간결하게 할 수 있겠지만 생각이 안나서 이렇게 했다.

 

이 코드를 적용해서 인게임에서 확인해보았다.

 

 

윷을 던져 개라는 값이 나왔다.

이렇게 빨갛게 표시되는 곳이 이동할 수 있는 블럭이다. 위와 같은 코드 작성으로 인해 원래 같으면 바깥쪽으로 2칸만큼 표시되어야 할 블럭이 지름길에 있는 표시로 2칸이동 표시가 된 것이다.

 

 

이 함수는 윷이 나온 값의 배열블럭 위치에 빨간색 표시를 해주는 함수로써, 위와 같은 배열 위치별 조건문을 달아 이동함수와 표시함수를 나타낼 수 있다.

'유니티' 카테고리의 다른 글

[유니티 윷놀이] 말 잡기와 업기  (0) 2024.02.23
유니티 에셋  (0) 2024.02.23
[유니티 윷놀이] 윷 놀이 말 설정  (0) 2024.02.23
[유니티 윷놀이] 턴제  (0) 2024.02.23
[유니티 윷놀이] 윷놀이 판 배열 설정  (0) 2024.02.23