首页 文章

如何在GameObject上居中网格?

提问于
浏览
2

我有一个2D游戏,用户可以通过点击屏幕添加顶点来创建汽车,然后在他们认为合适时拖动它们 . 然后使用这些顶点绘制网格 . 用户还可以向顶点添加轮子(每个顶点1个) .

在游戏中还有一个让计算机生成随机汽车的选项,它可以通过在unit circle内的随机点创建八个顶点来实现 .

存储这些汽车并且用户可以加载它们并重新使用它们 . 下面的两张图片显示了一个方形按钮,其中包含一台计算机生成的汽车(绿色的红色车轮),它按照预期位于广场内部,还有一个用户生成的汽车(白色粉红色车轮)位于广场外 .

我知道这是因为计算机生成的网格从Vector3.zero中绘制了三角形,这是对象的中心,而用户在顶点之间只创建了一个三角形,它们不一定围绕对象的中心放置(如在这个例子中,它们都放在中心的上方和右侧) .

How would I go about centering the mesh of the user created car?

我也许可以计算网格的中心,然后从所有顶点的位置中减去它 . 或者我可以在游戏对象的位置中减去该位置,该游戏对象在gui中呈现网格时保持网格 . 或者有更好的替代解决方案?

Object that sits inside of the square

Object that does not sit inside of the square

1 回答

  • 3

    使用Mesh.Bounds

    Transform car;
    Bounds carBounds = car.GetComponent<MeshFilter>().mesh.bounds;
    Vector3 whereYouWantMe;
    Vector3 offset = car.transform.position - car.transform.TransformPoint(carBounds.center);
    car.transform.position = whereYouWantMe + offset;
    

    这也可以让你访问一堆很酷的字段,如 center min maxsize

相关问题