我目前有一个用于建筑的物品放置系统。它通过实例化对象的“幽灵”来显示它可以放置的位置,幽灵(半透明)对象附加到摄像机,并在玩家点击时将对象实例化到其位置。
我得到了保持鬼对象的位置:
var pos = transform.position + transform.forward * placeDistance; // A position 'someDistance' in front of the player
pos.y = Terrain.activeTerrain.SampleHeight(pos); // Get the position at the surface of the terrain to place the object
firePlaceable.transform.position = pos + Vector3.up * 0.001f; // 'halfHeight' is used in case the pivot is not on the base
现在..我需要根据地形旋转对象,以便火场或多或少地正确旋转。有任何想法吗?最好的计划是什么?
答案 0 :(得分:1)
在地点'位置使用地形法线向量。
例如,你可以直接从壁炉上做一个光线投射。结果命中包含一个法线,即你的位置向上传播。
通过思考......我假设你已经做了一个光线投射以获得正确放置壁炉的位置?
使用展示位置光线投射来获取向上矢量而不是制作新的矢量。
基本上这样做
fireplace.transform.up = clickPlaceHit.normal;