簡體   English   中英

如何通過C#腳本統一將gameObject完美地放置在網格上?

[英]How to perfectly place a gameObject on a mesh through C# script in unity?

摘要:我有一個帶有岩石網格物體的游戲對象。 但是,網格的底部是神聖且丑陋的。 我想將其放置在看起來像小山的網格上,以使玩家無法看到游戲對象的丑陋和神聖的底部。

我有一個使用raycast放置岩石的腳本。 射線投射在網格上方。 當我向下光線投射時,我在山丘上看到一個Vector3。 我把那塊石頭放在那一點上,我可以看到它的底部! 如何避免使用C#代碼?

這是我的完整問題:

如何:旋轉和移動一個具有“網格”作為其組件的GameObject,以便它“完美地”位於另一個網格上,而不會通過Unity中的c#腳本看到GameObject的底部。

現在看起來如何

我想要達到的目標

任何幫助表示贊賞!

這是一段代碼,該代碼使用射線投射的正常值旋轉岩石網格。

法線是向量在頂點之間向外(垂直)朝向網格幾何體的方向:

https://zh.wikipedia.org/wiki/Vertex_normal#/media/File:Vertex_normals.png

如果將此腳本放置在岩石網格物體上,它將告訴岩石網格物體其向上矢量與射線投射點所在的法線相同。

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;
            }
        }
    }
}

普通棒

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM