gpt4 book ai didi

unity-game-engine - 如何使网格物体在游戏对象上居中?

转载 作者:行者123 更新时间:2023-12-02 20:54:15 25 4
gpt4 key购买 nike

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

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

这些汽车被存储起来,用户可以装载它们并重新使用它们。下面的两张图片显示了一个方形按钮,其中一辆计算机生成的汽车(带有红色轮子的绿色汽车)按预期位于广场内部,而一辆用户生成的汽车(带有粉色轮子的白色汽车)位于广场外部。

我知道这是因为计算机生成的网格从对象的中心 Vector3.zero 绘制三角形,而用户在顶点之间仅创建一个三角形,这些三角形不一定放置在中心周围对象的位置(如本示例所示,它们全部放置在中心的上方和右侧)。

我将如何使用户创建的汽车的网格居中?

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

Object that sits inside of the square Object that does not sit inside of the square

最佳答案

使用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

关于unity-game-engine - 如何使网格物体在游戏对象上居中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32139017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com