-
[TIL] 8주차 3일 팀 프로젝트 진행 ( Raycast, Instantiate )개발일지/스파르타 코딩클럽 부트캠프 2024. 6. 5. 20:42
현재 우리팀이 만들고 있는 게임은 방을 돌아다니며 함정과 퍼즐을 클리어하는 형태의
미로퍼즐 게임이다.
나는 함정 방 구상, 구현을 맡게 되었는데
오늘 구현한 함정 방으로는
바닥의 레이저에 플레이어가 닿게되면 천장의 랜덤한 위치에서 칼이 20개가 떨어지는 함정이다.
칼을 맞는다고 즉사는 아니어서 그렇게 많은 숫자는 아닐거라고 생각된다.
public class KnifeTrap : MonoBehaviour { RaycastHit hit; [SerializeField] LayerMask layerMask; [SerializeField] float maxDistance; [SerializeField] float time; public GameObject knifePrefab; public GameObject curGameObject; void Update() { Debug.DrawRay(transform.position, transform.forward * maxDistance, Color.red, 0.3f); if(Physics.Raycast(transform.position, transform.forward , out hit , maxDistance, layerMask)) { if(hit.collider.gameObject != curGameObject) { curGameObject = hit.collider.gameObject; for(int i = 0; i < 20; i++) { Instantiate(knifePrefab); } } } } }
바닥의 레이저같은 경우에는 Raycast로 구현하고 레이저를 실린더 스프라이트를 아주 얇게 만들어서 구현했다.
Ray에 Hit할 시 미리 만들어둔 knifePrefab이 20개가 생산되는데
void Start() { float x = Random.Range(2, 8); float y = 8.5f; float z = Random.Range(1, 9); transform.position = new Vector3(x, y, z); } private void OnCollisionEnter(Collision other) { if (other.gameObject.tag == "Player") { //TODO : HP깎이는 로직 } }
현재 완성은 안됐고, 바닥에 떨어지면 기능이 false된다던가 추가해야할 것들이 있지만
일단은 생성 시에 랜덤좌표 같은 높이에서 생성되게 구현했다.
OnCollisionEnter를 사용하여 플레이어 태그와 닿으면 HP가 깎이는 로직인데
아직 HP가 구현되지 않아서 일단 보류
'개발일지 > 스파르타 코딩클럽 부트캠프' 카테고리의 다른 글
[TIL] 9주차 1일 팀 프로젝트 마무리 단계 ( OnTriggerEnter ) (0) 2024.06.10 [TIL] 8주차 5일 팀 프로젝트 진행 , 시험 (2) 2024.06.07 [TIL] 8주차 2일 팀 프로젝트 진행 (2) 2024.06.04 [TIL] 8주차 1일 팀 프로젝트 시작 (0) 2024.06.03 [TIL] 7주차 5일 개인과제 회고 (0) 2024.05.31