-
안녕하세요.
이번글에서는 로블록스의 간단한 재미 요소를 추가해 보려고 합니다.
오징어 게임의 유리 다리를 추가해 보려고 작성을 하던 도중
실시간으로 무언갈 감지를 하는 것보다는
강화 유리가 아닌 파트에만 터치 이벤트를 해주면 되겠다고 생각이 들었습니다.
각 Bridge1,4,5의 파트는 다음과 같이 될 것입니다.
가장 먼저 서버 스크립트를 생성해 주어 터치 이벤트를 연결시켜 주었습니다.
플래그로 제어를 한 이유는 재동작을 방지하기 위함입니다.
또한 위에서부터 보자면 Workspace 공강 내에 Bridge 폴더에 Bridge1~3의 Part에 접근하는 모습입니다.
다음 터치 이벤트시 생기게 될 구현은
bridge 파트의 콜라이더를 false로 끄고, 투명도를 1로 완전히 없어진 것처럼 구현을 한 뒤
2초 뒤 콜라이더를 true로 켜주고 투명도를 0으로 조절해 재생성된 것처럼 보이는 동작 구현입니다.
여기서 한 가지 추가로 말씀드릴 점은
터치 이벤트가 연결된 파트는, 게임 시작 시 worksapce를 확인해 보면 각 파트의 하위에 'TouchInterest'가 생성된다는 점입니다.
이후 데드존을 하나 두어서 플레이어가 다리에서 떨어졌을 때, 특정 위치로 스폰되는 구현을 더하겠습니다.
데드존의 스크립트는 서버 스크립트에서만 구현을 하였습니다.
지난 시간에도 사용한 것과 같이 GetPlayerFromCharacter 메서드를 사용했는데.
GetPlayerFromCharacter 메서드는 뒤에 오는 인자와 연결된 객체를 반환하며 연결이 되지 않을 경우 nil을 반환한다고 합니다.
일반적으로 workspace에 있는 캐릭터 객체를 의미하는데
로블록스 스튜디오를 실행한 뒤 Workspace를 확인해 보면
실제로 제 아이디가 생성이 되어있는 것을 볼 수 있습니다.
이후 plr.Character.HumanoidRootPart.CFrame의 위치를
spawnPosLevel1의 위치로 Cframe을 이동하는 모습입니다.
여기서 질문
Q. HumanoidRootPart이 뭔가요?
A. 캐릭터의 중심이 되는 파트입니다.
다른 파츠(왼팔, 왼발 등)를 이동시키게 되면 그 파트면 움직이거나 예기치 못한 상황이 발생하지만 HumanoidRootPart를 이동하면 이런 문제가 없이 나머지 파츠들도 자동으로 연결되어 움직이게 됩니다.
즉 HumanoidRootPart에 다른 파츠들이 종속되어 있다고 생각하시면 됩니다.
감사합니다.
'로블록스 > 첫 프로젝트' 카테고리의 다른 글
로블록스 데이터 저장 (0) 2024.11.11 로블록스 텔레포트 (0) 2024.11.05 로블록스 루아 스크립트 (0) 2024.11.05 로블록스 스튜디오 작업공간 (0) 2024.11.02 로블록스 (0) 2024.11.01