我有一个2D游戏,用户可以通过点击屏幕添加顶点来创建汽车,然后根据需要拖动它们。然后使用这些顶点绘制网格。用户还可以向顶点添加轮子(每个顶点1个)。
在游戏中还有一个让计算机生成随机汽车的选项,它可以通过在unit circle内的随机点创建八个顶点来实现。
存储这些汽车,用户可以加载它们并重新使用它们。下面的两张图片显示了一个方形按钮,其中有一台计算机生成的汽车(带有红色轮子的绿色汽车)按照预期位于广场内部,还有一个用户生成的汽车(白色粉红色车轮)位于广场外。
我知道这是因为计算机生成的网格从Vector3.zero中绘制了三角形,这是对象的中心,而用户在顶点之间只创建了一个三角形,这些三角形不一定要放在物体的中心(如本例所示,它们都放在中心的上方和右侧)。
我如何围绕用户创建的汽车的网格进行居中?
我也许可以计算网格的中心,然后从所有顶点的位置中减去它。或者我可以从游戏对象的位置中减去该位置,该角色在gui中呈现时保持网格。或者有更好的替代解决方案吗?
答案 0 :(得分:3)
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
max
和size