英文:
error CS0030: Cannot convert type 'UnityEngine.Vector2' to 'UnityEngine.Vector2Int'
问题
我在我的洞穴生成脚本中遇到了这个问题,这是这行代码:
Vector2Int nextPoint = passage[passage.Count - 1] + (Vector2Int)(dir * connectionLength);
我该如何解决?
我以前从未遇到过这个错误,所以我不知道该如何解决,这可能是一个很容易解决的错误,但我刚刚开始使用Unity。我希望有人告诉我如何解决这个问题。
英文:
I have this problem in my cave generation script, this is the line
Vector2Int nextPoint = passage[passage.Count - 1] + (Vector2Int)(dir * connectionLength);
How I do solve it?
I never had this error so I dont know how to solve it, it will probably an error very easy to solve but I'm just beginning with unity. I'm expecting someone that says me how to solve this problem
答案1
得分: 1
你可以使用Vector2Int.FloorToInt(Vector2 t)
来进行转换,我不认为有一个明确的从Vector2
到Vector2Int
的转换定义。如果你更喜欢四舍五入而不是向下取整的值,你也可以使用Vector2Int.RoundToInt(Vector2 t)
。
你的代码将如下所示:
Vector2Int nextPoint = passage[passage.Count - 1] + Vector2Int.FloorToInt(dir * connectionLength);
英文:
You can use Vector2Int.FloorToInt(Vector2 t)
to do the conversion, I don't believe there is an explicit conversion defined from Vector2
to Vector2Int
. In case you prefer rounding instead of flooring the value, you can also use Vector2Int.RoundToInt(Vector2 t)
Your code would look like this:
Vector2Int nextPoint = passage[passage.Count - 1] + Vector2Int.FloorToInt(dir * connectionLength);
答案2
得分: 0
你之所以会得到错误是因为 Vector2
和 Vector2Int
是两种不同的类型。 Vector2
可以存储浮点数值,而 Vector2Int
则不能。
因此,你需要将 dir
的 Vector2(看起来是这样)四舍五入为最接近的整数值。 为此,你可以使用 Vector2ToInt
。
总的来说,你的代码应该像这样:
Vector2 nextPoint = passage[passage.Count - 1] + (dir * connectionLength);
Vector2Int nextPointInt = new Vector2Int((int) nextPoint.x, (int) nextPoint.y);
假设值的类型是:
private Vector2 dir;
private int connectionLength;
private List<Vector2Int> passage;
----- 或者 -----
private List<Vector2> passage;
英文:
You are getting the error because Vector2
and Vector2Int
are two different types. Vector2
can store float values while Vector2Int
cannot.
Therefore you need to Round the dir
Vector2 (as it seems) to the nearest integer value. For this, You can use Vector2ToInt
.
Overall your code should look like this:
Vector2 nextPoint = passage[passage.Count - 1] + (dir * connectionLength);
Vector2Int nextPointInt = new Vector2Int((int) nextPoint.x, (int) nextPoint.y);
Assuming that the value types are:
private Vector2 dir;
private int connectionLength;
private List<Vector2Int> passage;
----- OR -----
private List<Vector2> passage;
答案3
得分: 0
使用这段代码:
# 将 Vector2 转换为 Vector2Int。
vector2IntValue = Vector2Int.FloorToInt(vector2Value);
你的最终代码:
Vector2Int lengthVal = Vector2Int.FloorToInt(dir * connectionLength);
Vector2Int nextPoint = passage[passage.Count - 1] + lengthVal;
英文:
Use this code :
// Convert the Vector2 to Vector2Int.
vector2IntValue = Vector2Int.FloorToInt(vector2Value);
Your Final Code :
Vector2Int lengthVal = Vector2Int.FloorToInt(dir * connectionLength);
Vector2Int nextPoint = passage[passage.Count - 1] + lengthVal;
答案4
得分: 0
我刚刚解决了,谢谢,但我有另一个问题,我的脚本不会创建地图,它创建了一个瓦片块。
英文:
I have just solve it thank you, but I have another problem my script doesn´t create a map it creates a block of tiles.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论