Question by
meksikietis222 · Nov 22, 2018 at 03:27 PM ·
2dcollision2dtiles
Placing and Breaking tiles in Unity 2D
Hello, so i managed to write a code that lets me place and break tiles while playing, but i cant place or break tiles above world... Picture explains it. Code for placing and breaking tiles:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Tilemaps;
public class Place : MonoBehaviour
{
public bool PaintActive;
public Tilemap tileMap;
public Tile redTile;
public List<Vector3> listOfTilePositions = new List<Vector3>();
public Vector3Int cellPosition;
public Camera cameraP;
public GridLayout gridLayout;
public int leftCornerX;
public int leftCornerY;
void Start()
{
for (int x = tileMap.cellBounds.xMin; x < tileMap.cellBounds.xMax; x++)
{
for (int y = tileMap.cellBounds.yMin; y < tileMap.cellBounds.yMax; y++)
{
Vector3Int localPlace = (new Vector3Int(x, y, (int)tileMap.transform.position.y));
Vector3 place = tileMap.CellToWorld(localPlace);
if (tileMap.HasTile(localPlace))
{
listOfTilePositions.Add(new Vector3(x - leftCornerX, y - leftCornerY, 0));
}
}
}
}
void fireLaser()
{
Vector2 CamPosGrid = cameraP.ScreenToWorldPoint(Input.mousePosition);
cellPosition = gridLayout.WorldToCell(CamPosGrid);
Debug.Log(cellPosition);
if (listOfTilePositions.Contains(cellPosition))
{
tileMap.SetTile((cellPosition), redTile);
}
}
void Update()
{
if (Input.GetButtonDown("Fire2"))
{
PaintActive = true;
}
if (Input.GetButtonUp("Fire2"))
{
PaintActive = false;
}
if (PaintActive == true)
{
fireLaser();
}
}
}
aaahelpmepls.png
(43.6 kB)
Comment
Your answer
Follow this Question
Related Questions
Slicing tilesets with different single image size 0 Answers
Is calling OnCollisionEnter2D on allot of GameObjects leading to worse performance? 0 Answers
Rough time trying to detect collisions 1 Answer
How can i do an action after i detect a collision2D && and a key/mouse button being pressed? 1 Answer
Help with 2D Checkers game 0 Answers