52 lines
1.3 KiB
C#
52 lines
1.3 KiB
C#
using UnityEngine;
|
|
using UnityEngine.Tilemaps;
|
|
using UnityEngine.InputSystem;
|
|
|
|
public class TileClickBreaker : MonoBehaviour
|
|
{
|
|
[SerializeField]
|
|
private Tilemap tilemap;
|
|
|
|
void Update()
|
|
{
|
|
if (Mouse.current == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (Mouse.current.leftButton.wasPressedThisFrame)
|
|
{
|
|
Vector2 mousePos = Mouse.current.position.ReadValue();
|
|
|
|
// 2D는 카메라 좌표 변환 방식이 다릅니다
|
|
Vector2 worldPos = Camera.main.ScreenToWorldPoint(mousePos);
|
|
|
|
// 2D 전용 레이캐스트 사용
|
|
RaycastHit2D hit = Physics2D.Raycast(worldPos, Vector2.zero);
|
|
|
|
if (hit.collider != null)
|
|
{
|
|
Destroy(hit.transform.gameObject);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void BreakTileAtMousePosition()
|
|
{
|
|
// 마우스가 연결되어 있는지 확인
|
|
if (Mouse.current == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
// 새로운 방식의 마우스 위치 가져오기
|
|
Vector3 mousePos = Mouse.current.position.ReadValue();
|
|
Vector3 mouseWorldPos = Camera.main.ScreenToWorldPoint(mousePos);
|
|
Vector3Int cellPosition = tilemap.WorldToCell(mouseWorldPos);
|
|
|
|
if (tilemap.HasTile(cellPosition))
|
|
{
|
|
tilemap.SetTile(cellPosition, null);
|
|
}
|
|
}
|
|
} |