TigerProject/Assets/Test/Block/TileClickBreaker.cs

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);
}
}
}