首页 > 解决方案 > 如何创建允许我根据网格移动精灵/对象的 C# 脚本

问题描述

我需要使用 C# 脚本移动网格上的对象。我transform.position = new Vector3 (X, Y, Z)用来移动它,但它会根据主网格移动(当你开始一个新项目时,Unity 默认创建)。如何附加transform.position到我创建的网格?

// A3 is the sprite
public class A3 : MonoBehaviour {

    float Y = -0.806043f;
    float X = -1.007555f;
    int Z = -1;

    void Update() 
    {
        transform.position = new Vector3 (X, Y, Z);
    }
}

标签: c#unity3dgrid

解决方案


网格移动的基本公式是这样的:

float TileSize = 1;

Vector3 pos = new Vector3(2.5f, 0.1f, 5.25f);

pos.x = Mathf.FloorToInt(pos.x / TileSize) * TileSize;
pos.y = Mathf.FloorToInt(pos.y / TileSize) * TileSize;
pos.z = Mathf.FloorToInt(pos.z / TileSize) * TileSize;

TileSize: 0.5=>x:2.5f, y:0f, z:5f

TileSize: 1=>x:2f, y:0f, z:5f

TileSize: 2=>x:2.5f, y:0f, z:4f


推荐阅读