Gibt es eine Möglichkeit, während der Laufzeit Mesh -Kollider zu einem GameObject ordnungsgemäß hinzuzufügen? Ich wollteC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Gibt es eine Möglichkeit, während der Laufzeit Mesh -Kollider zu einem GameObject ordnungsgemäß hinzuzufügen? Ich wollte

Post by Anonymous »

Ich habe ein System erstellt, das .FBX -Modelle dynamisch in den 3D -Raum importieren kann. Ich habe eine Klasse, die jedes Spielobjekt, das in die Szene importiert wurde, automatisch Mesh -Kollider hinzufügt, damit sie leicht Klicks erkennen und Folgendes tun können. Die Mesh -Kollider scheinen jedoch nicht auf die Objekte angewendet zu werden. Dies führt dazu, dass mein Raycast Hits verpasst und in meinem .exe -Build kein Klick erkannt wird. Dies ist hauptsächlich ein Build -Problem. Alles scheint im Unity Editor in Ordnung zu sein. < /P>

Code: Select all

 using System.IO;
using UnityEngine;

public class AutoMeshColliderManager : MonoBehaviour
{
void Update()
{
DetectAndApplyColliders(); // Continuously check for new models
}

void DetectAndApplyColliders()
{
GameObject[] allObjects = FindObjectsOfType();

foreach (GameObject obj in allObjects)
{
if (obj.transform.parent == null) // Only check root objects
{
AddCollidersRecursively(obj.transform); // Add to parent + children
}
}
}

void AddCollidersRecursively(Transform parent)
{
// Check if the object already has a collider
if (!parent.gameObject.GetComponent())
{
MeshFilter meshFilter = parent.gameObject.GetComponent();

if (meshFilter != null && meshFilter.sharedMesh != null)
{
MeshCollider meshCollider = parent.gameObject.AddComponent();
meshCollider.convex = false; // Set convex to false (adjust if needed)
Debug.Log("Added MeshCollider to: " + parent.gameObject.name);
}
}

// Recursively apply to all child objects
foreach (Transform child in parent)
{
AddCollidersRecursively(child);
}
}
}

enter code here

enter code here

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post