팀프로젝트에서 퍼즐 게임을 주제로 방탈출 느낌의 게임을 만들고 있는데
선택 구현에 포탈구현이 있길래 비슷하게 한번 도전해봤다.
약간의 미스테리 컨셉을 주고 싶었는데
마침 내가 맡은 방 에셋으로 거울이 있길래 거울을 이용해서 포탈을 만들어 보기로 했다.
일단 방 구조를 바꿔주었다!
딱 들어왔을 때 조금은 괴기스러운? 분위기를 주고 싶어서 넓은 방에 아무것도 없이 거울과 그림만 있게 수정해주었다.
진행 방식은 거울을 누르면 포탈을 타지는 것 처럼 이동이 되게 하고,
진짜 거울이 아닌 다른 거울을 누르면 계속해서 거울방을 빙빙 돌게 만들었다.
진짜 거울 밑에는 안빤양말뭉치(..) 가 놓여있어 양말뭉치를 따라가면 이 방의 최종 목적인 컴퓨터에 도달할 수 있다.
거울을 눌렀을 때 한 플레이어 위치를 순간이동 시키는게 아니라,
플레이어를 방마다 두고 거울을 누르면 해당 플레이어로 전환되게 작업하였다!
>> 이 방법이 좀 더 깔끔하고, 유지보수가 간단했다
PlayerSwitcher 라는 스크립트를 작성해주었다.
public class PlayerSwitcher : MonoBehaviour
{
public GameObject[] players; // 플레이어 오브젝트 배열
public Transform[] spawnLocations; // 각 플레이어의 스폰 위치 배열
private int currentPlayerIndex = 0;
private Vector3[] initialPositions; // 각 플레이어의 초기 위치 배열
void Start()
{
// 초기 위치 저장
initialPositions = new Vector3[players.Length];
for (int i = 0; i < players.Length; i++)
{
initialPositions[i] = players[i].transform.position;
players[i].SetActive(i == currentPlayerIndex); // 초기에는 첫 번째 플레이어만 활성화
}
}
public void SwitchPlayer(int playerIndex)
{
// 현재 활성화된 플레이어 비활성화
players[currentPlayerIndex].SetActive(false);
// 새로운 플레이어 인덱스로 전환
currentPlayerIndex = playerIndex;
// 새로운 플레이어를 초기 스폰 위치로 이동시키고 활성화
players[currentPlayerIndex].transform.position = spawnLocations[currentPlayerIndex].position;
players[currentPlayerIndex].SetActive(true);
// Player_Modify를 제외한 나머지 플레이어의 위치 초기화
for (int i = 1; i < players.Length; i++) // Player_Modify는 0번째 인덱스
{
if (i != currentPlayerIndex)
{
players[i].transform.position = initialPositions[i];
}
}
}
}
플레이어를 전환시키기 위해 PlayerSwticher 를 빈 오브젝트로 만들어주고,
거기에 PlayerSwitcher 스크립트를 이어준다.
이렇게 하면 플레이어를 인덱스 처리해서 0,1,2,3,... 이런식으로 지정해놓고 쓸 수 있다.
PlayerSwitcher 스크립트에서 이렇게 사용할 플레이어와 각각의 위치값을 넣어주면 된다.
>> Element 옆에 있는 숫자가 이동할 인덱스가 된다.
거울에 아이템 오브젝트 등등을 넣어줘서 커서를 가까이 가져다대면 거울이라는 정보가 뜨게 했고,
포탈에 사용된 스크립트는 Mirror 이다
public class Mirror : MonoBehaviour
{
public PlayerSwitcher playerSwitcher;
public int playerIndex; // 전환할 플레이어 인덱스
void OnMouseDown()
{
playerSwitcher.SwitchPlayer(playerIndex);
}
}
거울을 클릭했을 때, 플레이어가 내가 지정해놓은 인덱스의 플레이어로 전환되게 만들었다.
Mirror 스크립트를 각 거울 오브젝트에 붙여주면 각 거울 오브젝트마다 플레이어 인덱스를 선택할 수 있는데,
그 거울을 누르면 어떤 플레이어로 이동할 것인지를 정해주는 것이다.
>> 이렇게 해주면 거울을 누르면 해당 플레이어로 전환되며 포탈처럼 사용할 수 있다!
헤헤 그래도 꽤나 거울미로 같은 느낌이죠?
유사 포탈 만들기 . 재밌었다
'제출용 > TIL' 카테고리의 다른 글
내일배움캠프 40일차 TIL + 낮과 밤 구현 (1) | 2024.06.12 |
---|---|
내일배움캠프 39일차 TIL + 컴퓨터 UI 사용하기 (1) | 2024.06.11 |
내일배움캠프 37일차 TIL + 라이팅 (1) | 2024.06.07 |
내일배움캠프 36일차 TIL + 스크립트 없이 팝업 만들기 (0) | 2024.06.05 |
내일배움캠프 35일차 TIL + png 스프라이트 만들기 / 각도기 만들기 (1) | 2024.06.04 |