根据Unity中的地形旋转对象(C#)

时间:2014-12-02 15:09:35

标签: c# unity3d rotation building

我目前有一个用于建筑的物品放置系统。它通过实例化对象的“幽灵”来显示它可以放置的位置,幽灵(半透明)对象附加到摄像机,并在玩家点击时将对象实例化到其位置。

我得到了保持鬼对象的位置:

        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

现在..我需要根据地形旋转对象,以便火场或多或少地正确旋转。有任何想法吗?最好的计划是什么?

1 个答案:

答案 0 :(得分:1)

在地点'位置使用地形法线向量。

例如,你可以直接从壁炉上做一个光线投射。结果命中包含一个法线,即你的位置向上传播。

通过思考......我假设你已经做了一个光线投射以获得正确放置壁炉的位置?

使用展示位置光线投射来获取向上矢量而不是制作新的矢量。

基本上这样做

fireplace.transform.up = clickPlaceHit.normal;