A* 알고리즘 구현을 해보기 위해 준비하다가 , 마우스 클릭으로 쉽게 장애물을 만들고 장애물 경로를 피해 찾아갔으면 좋겠다 싶어서 마우스 클릭으로 장애물을 만드는 기능을 구현했다.
RayCast를 활용하여 구현 하였고 해당 기능이 있으면 Play를 하여 내가 원하는 경로를 직접 만들어 줄 수 있는것이 장점이다.
코드는 생각나는데로 하드 코딩하여 썩 좋은 코드는 아니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class GridMapGenerator : MonoBehaviour
{
[SerializeField] private GameObject obstacle;
[SerializeField] private GameObject selectAreaPrefab;
public LayerMask Selectlayer;
private GameObject selectArea;
float delayClick = 0.1f;
float curClickTimer;
private void Awake()
{
selectArea = Instantiate(selectAreaPrefab);
}
private void Update()
{
curClickTimer += Time.deltaTime;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray,out RaycastHit hit,1000.0f))
{
Debug.DrawLine(ray.origin, hit.point, Color.red);
selectArea.transform.position = new Vector3(Mathf.Round(hit.point.x), 0.1f, Mathf.Round(hit.point.z));
if (Input.GetMouseButton(0) && curClickTimer > delayClick && LayerMatchCheck(hit.transform.gameObject.layer, Selectlayer))
{
curClickTimer = 0;
GameObject obj = Instantiate(obstacle);
Vector3 pos = new Vector3(selectArea.transform.position.x, 0, selectArea.transform.position.z);
obj.transform.position = pos;
}
}
}
private bool LayerMatchCheck(int target , LayerMask layer)
{
if(layer == (layer.value | 1 << target ))
{
return true;
}
return false;
}
}
'내일배움캠프_Unity_6기 > TIL(Today I Learend)' 카테고리의 다른 글
TIL : 2025-03-11(화) :: Unity 셰이더 그래프 + 근황 (0) | 2025.03.11 |
---|---|
TIL : 2025-02-07(금) :: 카드게임 - 카드 오브젝트 마우스 클릭 이동 임시 구현 (RaycastHit2D , ScreenToWorldPoint) (0) | 2025.02.07 |
TIL : 2025-01-24(금) :: 슬라임타워디펜스 프로젝트의 누락된 트러블슈팅 기록( 타워 이동시 기존에 있던 타일 데이터가 초기화 되지 않는 이슈 ) (0) | 2025.01.24 |
TIL : 2025-01-23(목) :: 구글 스프레드 시트 유니티랑 연동하기 (API 미 사용) (0) | 2025.01.24 |
TIL : 2024-12-27(금) :: 모의면접준비 (0) | 2024.12.27 |