unity3d 将Vector3转换为Vector3Int时出错

xwbd5t1u  于 2022-11-15  发布在  其他
关注(0)|答案(2)|浏览(282)

我的代码是这样设置的:

private void TrySpawningAnAgent(GameObject startStructure, GameObject endStructure){
        if (startStructure != null && endStructure != null){
            houses=GameObject.FindGameObjectsWithTag("Houses");
            specials = GameObject.FindGameObjectsWithTag("Special");
            Vector3Int startPosition = Mathf.FloorToInt(houses[UnityEngine.Random.Range(0, houses.Length)].transform.position);
            Vector3Int endPosition = Mathf.FloorToInt(specials[UnityEngine.Random.Range(0, specials.Length)].transform.position);
            var agent = Instantiate(GetRandomPedestrian(), startPosition, Quaternion.identity);
            var path = placementManager.GetPathBetween(startPosition, endPosition);
            if (path.Count > 0)
            {
                path.Reverse();
                var aiAgent = agent.GetComponent<AIAgent>();
                aiAgent.Initialize(new List<Vector3>(path.Select(x => (Vector3)x).ToList()));
            }
        }
    }

我的其他功能是这样设置的:

internal List<Vector3Int> GetPathBetween(Vector3Int startPosition, Vector3Int endPosition)
    {
        var resultPath = GridSearch.AStarSearch(placementGrid, new Point(startPosition.x, startPosition.z), new Point(endPosition.x, endPosition.z));
        List<Vector3Int> path = new List<Vector3Int>();
        foreach (Point point in resultPath)
        {
            path.Add(new Vector3Int(point.X, 0, point.Y));
        }
        return path;
    }

但是,在运行FloorToInt时,我一直收到相同的错误。无法从UnityEngine.Vector3转换为Float
我在想为什么不能通过函数传递。

xzlaal3s

xzlaal3s1#

看看这个文档页面:https://docs.unity3d.com/ScriptReference/Vector3Int-ctor.html
因为你已经在使用Vector3Int了,所以没有必要再使用Mathf。FloorToInt也是不可能的。我不明白你在那里想做什么,但是如果你只是想创建一个Vector3Int,就按照文档中说的去做。

Vector3Int m_Position = new Vector3Int(1, 5, -2);
xghobddn

xghobddn2#

伙计,Mathf.FloorToInt只在浮点上可用,在向量上不可用。
https://docs.unity3d.com/ScriptReference/Mathf.FloorToInt.html
您正在传入POSITION,它实际上是一个向量。
有问题的时候一定要去看医生。
顺便说一句,你使用的是Vector3的“Int”版本,这很奇怪。

相关问题