एकता में रनवे पर एक इंटरेक्टिव क्लॉथ से मेष को कैसे बचाया जाए?


10

एक दृश्य की शुरुआत में मेरे पास गेमऑबजेक्ट है जिसे 'शीट' कहा जाता है जो 'बॉल' गेमऑबजेक्ट के ऊपर स्थित है। शीट में एक इंटरेक्टिव क्लॉथ घटक है और एक क्लॉथ रेंडरर है। इंटरएक्टिव क्लॉथ घटक के लिए मेष एक विमान है जिसमें उच्च संख्या में कोने हैं। रनटाइम के दौरान शीट गेंद पर गिरती है और वह आकार बनाती है जो मुझे चाहिए। अगर मैं इस बिंदु पर इंटरएक्टिव क्लॉथ घटक को अक्षम कर देता हूं तो शीट मेष बिल्कुल वैसा ही रहता है जैसा मैं चाहता हूं, लेकिन मैं इसे प्रीफैब के रूप में बाहर नहीं निकाल सकता।

क्या किसी को उस आकृति की एक प्रति प्राप्त करने का एक तरीका पता है?

उदाहरण के लिए, रनटाइम के दौरान इंटरएक्टिव क्लॉथ से मेष को पढ़कर और फिर उस जाल को बदलने के लिए मैं इंटरएक्टिव क्लॉथ घटक के बिना कैसे चाहता हूं।

किसी भी तरह की सहायता का स्वागत किया जाएगा।


वैकल्पिक रूप से, आप ब्लेंडर जैसी किसी चीज में कपड़ा अनुकरण कर सकते हैं, मेष को बचा सकते हैं, और इसे एकता में आयात कर सकते हैं। ऑनलाइन कैसे करें, इस पर बहुत सारे ट्यूटोरियल हैं।
पीथोर

जवाबों:


0

एक सरल व्यवहार और कस्टम इंस्पेक्टर मदद करेगा। इसे अपनी स्क्रिप्ट में जोड़ें:

using UnityEngine;
using UnityEditor;
using System.Collections;

public class SaveMeshBehaviour : MonoBehaviour
{
    public Mesh GetMesh()
    {
        return gameObject.GetComponent<MeshFilter>().sharedMesh;
    }
}

[CustomEditor(typeof(SaveMeshBehaviour))]
public class SaveMeshInspector : Editor
{
    public override void OnInspectorGUI()
    {
        GUILayout.BeginHorizontal();
        if (GUILayout.Button("Save"))
        {
            var saveB = target as SaveMeshBehaviour;
            if (saveB != null)
            {
                var mesh = saveB.GetMesh();

                var copy = Mesh.Instantiate(mesh);
                AssetDatabase.CreateAsset(copy, "Assets/NewMesh.asset");
                AssetDatabase.SaveAssets();
            }
        }
        GUILayout.EndHorizontal();
    }
}

फिर दृश्य में SaveMeshBehaviour को अपने कपड़े में जोड़ें। कस्टम इंस्पेक्टर नए घटक को एक सेव बटन देगा। जब आप अपना दृश्य खेल रहे हों, तो सहेजें बटन पर क्लिक करें और यह एक जाली को बचाएगा जो विमान की एक प्रति है।

उम्मीद है की यह मदद करेगा!


2
धन्यवाद, लेकिन यह मेरे उदाहरण के लिए काम नहीं करेगा क्योंकि कोई MeshFilter संलग्न है। ऐसा इसलिए है क्योंकि इंटरएक्टिव क्लॉथ घटक मेष को धारण करता है। मैंने आपकी स्क्रिप्ट को संशोधित करने की कोशिश की, लेकिन मैं केवल "<इंटरएक्टिव क्लोथ> ()। कोने" और "<इंटरएक्टिवक्लिक> ()। मेष" तक पहुंच सकता हूं। मुझे लगता है कि यह जिस जाली को पकड़ता है वह तब नहीं बदलता है जब मैं आपकी स्क्रिप्ट का उपयोग उस जाल तक पहुंचने के लिए करता हूं जो मूल जाल का उत्पादन करता है। मुझे लगता है कि शीर्षकों को संशोधित किया जा रहा है, लेकिन मुझे नहीं पता कि नया जाल बनाने के लिए इसका उपयोग कैसे किया जाए।
RebDev

यदि आप कोने और मेष की सरणी प्राप्त कर सकते हैं। जाल को कॉपी करने की कोशिश करें और फिर copy.vertices = cloth.vertices ऊपर की तरह कॉपी से एक संपत्ति बनाने के साथ पालन करें। यकीन नहीं है कि यह काम करेगा, लेकिन यह हो सकता है।
पैट्रिकशर्बोघ

दुर्भाग्य से यह त्रुटि देता है "Mesh.vertices बहुत छोटा है। आपूर्ति की गई सरणी सरणी में त्रिकोण सरणी द्वारा संदर्भित की तुलना में कम कोने हैं।"
RebDev
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.