c# - 如何创建允许我根据网格移动精灵/对象的 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);
}
}
解决方案
网格移动的基本公式是这样的:
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
推荐阅读
- search - 我只是想做搜索功能。在这个搜索函数中,一个字符通过 find() 与数组中的所有元素进行比较。的
- jsp - 当我在jsp中使用会话时出现一个springboot奇怪的状态500问题
- cryptography - 如何在 ERC20 或 BEP20 智能合约中添加“交易费”?
- c - C 转换结构的返回值
- jquery - jQuery 外部函数参数在每个循环中不可见
- node.js - 当graphQL的查询从mongodb返回空数据时,你应该检查什么?
- html - 尽管自动溢出,flexbox 的内容仍然溢出
- sql-server - SQL Server:将旧 ID 更新为新 ID(UPDATE 中的 SELF JOIN)
- visual-studio - 生成的数据库与我的 edmx 架构不匹配
- reactjs - 在 lefalet 中创建新形状图层时如何删除最后一个形状图层