我有一个Vector2
,我想将其转换为Vector2Int
。我知道我可以用以下方式转换Vector2
:
Vector2 v2 = new Vector2(10, 10);
Vector2Int v2i;
v2i = new Vector2Int((int) v2.x, (int) v2.y);
但是有没有更短或更有效的方法?例如这样的东西:
v2i = v2.toVector2Int();
答案 0 :(得分:7)
Vector2 v2 = new Vector2(10, 10);
Vector2Int v2i = Vector2Int.RoundToInt(v2);
您也可以根据需要使用 Vector2.CeilToInt(Vector2 v) 和 Vector2.FloorToInt(Vector2 v)
答案 1 :(得分:4)
您可以使用扩展方法使其更具可读性:
A = np.array([[1,2,3],[2,3,4]])
B = np.array([[2,3],[4,5],[5,6]])
result = matrix_multiply(A,B).T
print (result)
# array([[25., 31.],
# [36., 45.]])
并像这样使用它:
v = np.array([[4,3,1],[6,7,2]])
g = np.array([[3],[1],[4]])
result = matrix_multiply(v,g)
print (result)
# [[19. 33.]]
答案 2 :(得分:0)
但是有没有更短或更有效的方法?
不幸的是,没有更好的解决方案。
请参见Unity3d源代码: Vector2d和Vector2dInt。
只能进行反向转换:
Vector2 v2 = new Vector2();
Vector2Int v2i = new Vector2Int(10, 10);
v2 = (Vector2)v2i;
答案 3 :(得分:0)
您可以使用automapper库,让该库为您完成这项工作。 通话内容如下:
Vector2Int v2i = Mapper.Map<Vector2>(v2);
automapper的优势在于,它是一个非常强大的工具,可以为您隐藏所有这些讨厌的映射逻辑。