Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过统一的C#脚本将游戏对象完美地放置在网格上?_C#_Unity3d_Rotation_Mesh_Calculation - Fatal编程技术网

如何通过统一的C#脚本将游戏对象完美地放置在网格上?

如何通过统一的C#脚本将游戏对象完美地放置在网格上?,c#,unity3d,rotation,mesh,calculation,C#,Unity3d,Rotation,Mesh,Calculation,摘要: 我有一个有岩石网格的游戏对象。但是,网格的底部是空心且丑陋的。我想把它放在一个看起来像小山的网格上,这样玩家就看不到游戏物体丑陋而神圣的底部 我有一个脚本,使用光线投射来放置岩石。光线投射位于网格上方。当我向下光线投射时,我在看起来像山的网格上得到一个矢量3。我把那块石头放在那一点上,我就能看到它的底部了!如何避免使用C代码 这是我的全部问题: 如何: 旋转和移动一个游戏对象,它有一个“网格”作为它的组件,这样它就可以“完美地”位于另一个网格上,而不会通过c#脚本看到游戏对象的底部 现在

摘要: 我有一个有岩石网格的游戏对象。但是,网格的底部是空心且丑陋的。我想把它放在一个看起来像小山的网格上,这样玩家就看不到游戏物体丑陋而神圣的底部

我有一个脚本,使用光线投射来放置岩石。光线投射位于网格上方。当我向下光线投射时,我在看起来像山的网格上得到一个矢量3。我把那块石头放在那一点上,我就能看到它的底部了!如何避免使用C代码

这是我的全部问题:

如何: 旋转和移动一个游戏对象,它有一个“网格”作为它的组件,这样它就可以“完美地”位于另一个网格上,而不会通过c#脚本看到游戏对象的底部

现在看起来怎么样

我想要达到的目标


感谢您的任何帮助

下面是一段代码,它使用光线投射命中的法线值旋转岩石网格

法线是顶点之间网格几何体向外(垂直)的向量:

如果将此脚本放置在岩石网格上,它将告诉岩石网格其向上向量与光线投射点所在的法线相同

using UnityEngine;

public class StickToTerrain : MonoBehaviour
{
    void Update()
    {
        if (Input.GetMouseButton(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

            if (Physics.Raycast(ray, out RaycastHit terrainHit))
            {
                transform.up = terrainHit.normal;
            }
        }
    }
}

下面是一段代码,它使用光线投射命中的法线值旋转岩石网格

法线是顶点之间网格几何体向外(垂直)的向量:

如果将此脚本放置在岩石网格上,它将告诉岩石网格其向上向量与光线投射点所在的法线相同

using UnityEngine;

public class StickToTerrain : MonoBehaviour
{
    void Update()
    {
        if (Input.GetMouseButton(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

            if (Physics.Raycast(ray, out RaycastHit terrainHit))
            {
                transform.up = terrainHit.normal;
            }
        }
    }
}

谢谢您的帮助!很乐意帮忙。:)祝你好运谢谢你的帮助!很乐意帮忙。:)祝你好运