大家好!我正在Unity 2D上做一个游戏,我遇到了一个问题。我需要挖特定的雪瓷砖,当玩家拿着LeftShift,并在触发标签“雪”(瓷砖Map确实有这样的标签)。我决定改变规模,因为这是最容易理解的球员的变化,我认为(使精灵黑暗,摧毁它,等等)。现在我有这样的代码:
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<Tile>(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");
}
}
}
}
}
我可以用什么来缩放图块?提前感谢!
我已经试过几种方法了:
1.首先,我搜索了net(尤其是文档中的)函数,这些函数对确切的tile做了一些事情;
1.然后我尝试使用Matrix 4x 4来缩放tile,但是它没有按预期工作(它根本没有工作,但是至少没有错误);
currentTile.transform = Matrix4x4.Scale(new Vector3(0.5f, 0.5f, 1));
1.当我没有选择的时候,我试着自己做一些事情,用精灵。
Sprite currentSprite = currentTile.sprite;
currentSprite.localScale -= new Vector3(0.01f, 0.01f, 0);
1.然后我在StackOverflow上搜索了这样一个问题,但没有找到任何对我有帮助的东西,所以我的问题是!
1条答案
按热度按时间zkure5ic1#
您可以使用
tilemap.SetTransformMatrix();
在你的例子中,不是
currentTile.transform = Matrix4x4.Scale(new Vector3(0.5f, 0.5f, 1));
您可以使用
tilemap.SetTransformMatrix(tilePosition, Matrix4x4.Scale(new Vector3(0.5f, 0.5f, 1)));
如果要设置其动画: