Я делаю игру на Unity 2D и столкнулся с проблемой. Мне нужно выкопать конкретный фрагмент снега, когда игрок удерживает левый Shift и находится в триггере с тегом «Снег» (на тайловой карте есть такой тег). Я решил изменить масштаб, так как это наиболее понятный для игрока из предложенных мне вариантов (темнеть спрайт, уничтожить его и т.д.)
Сейчас у меня есть такой код:
Код: Выделить всё
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Tilemaps;
public class SnowTaking : MonoBehaviour
{ //Tile variables
public Tilemap tilemap;
public ITilemap iTilemap;
public Tile whiteTile;
public Tile redTile;
public Tile greenTile;
public Tile blueTile;
void OnTriggerStay2D(Collider2D other) {
if(other.gameObject.tag == "Snow") {
if(Input.GetKey(KeyCode.LeftShift)) {
//При нажатии LeftShift
float x = gameObject.transform.position.x;
float y = gameObject.transform.position.y;
float z = 0;
Vector3 position = new Vector3(x, y, z);
Vector3Int tilePosition = tilemap.WorldToCell(position);
Tile currentTile = tilemap.GetTile(tilePosition);
//Conditions for each type of snow
if(whiteTile == currentTile) {
//Scaling tile here
Debug.Log("White");
} else if(redTile == currentTile) {
//Scaling tile here
Debug.Log("Red");
} else if(greenTile == currentTile) {
//Scaling tile here
Debug.Log("Green");
} else if(blueTile == currentTile) {
//Scaling tile here
Debug.Log("Blue");
} else {
Debug.Log("None");
}
}
}
}
}
Несколько вещей я уже попробовал:
- Сначала поискал в сети ( особенно в документации) функции, которые что-то делают с конкретным тайлом;
- Затем я попробовал использовать Matrix4x4 для масштабирования тайла, но это не сработало должным образом (не сработало вообще, но хотя бы ошибок не было);
Код: Выделить всё
currentTile.transform = Matrix4x4.Scale(new Vector3(0.5f, 0.5f, 1));
- Когда у меня не было выбора, я пытался сделать что-то сам и использовал спрайты. Конечно, это не сработало;
Код: Выделить всё
Sprite currentSprite = currentTile.sprite;
currentSprite.localScale -= new Vector3(0.01f, 0.01f, 0);
Подробнее здесь: https://stackoverflow.com/questions/744 ... he-tilemap
Мобильная версия