2

我有一个简单的项目,我在其中产生了多个小行星,它们往往会被行星吸引。我想添加一个简单的轨迹来增强视觉效果。当我手动添加小行星然后添加组件“轨迹渲染器”并选择所需的材料时,这非常简单。但我无法弄清楚如何将其添加到脚本中。这是我现在的代码:

using System.Collections;
using UnityEngine;
[RequireComponent(typeof(Rigidbody))]
[RequireComponent(typeof(FauxGravityBody))]
public class Spawner : MonoBehaviour {

    public GameObject meteorPrefab;
    public float distance = 20f;
    public float time = 10f;
    private GameObject meteor;
    public TrailRenderer trail;
    void Start ()
    {
        StartCoroutine(SpawnMeteor());
    }

    IEnumerator SpawnMeteor()
    {
        Vector3 pos = Random.onUnitSphere * distance;
        meteor = Instantiate(meteorPrefab, pos, Quaternion.identity);
        meteor.AddComponent<FauxGravityBody>();
        meteor.AddComponent<DestroyMeteor>();
        meteor.AddComponent<SphereCollider>();
        meteor.AddComponent<TrailRenderer>();

        yield return new WaitForSeconds(time);

        StartCoroutine(SpawnMeteor());
    }

}

这确实将轨迹添加到生成的对象中,但它使用的是默认的粉红色轨迹。我想要的跟踪材料位于文件夹“Assets/Effects/Trail.mat”中。如何在脚本中指定我想使用该特定材料?

亲切的问候。

4

2 回答 2

1

请注意,如果您需要这些组件——TrailRenderer、SphereCollider 等——在所有流星上,您可以简单地将它们手动添加到 Prefab 本身(通过将它们拖到上面)。然后,一旦您实例化主预制件,它们就会在那里,正确的材料和所有东西。

然后,您仍然可以使用通过GetComponent<TrailRenderer>()等方式获取特定设置(或禁用组件)。祝你好运!

于 2020-02-16T12:40:43.170 回答
0

最好的方法是......

创建Prefab并将您需要的组件附加到您的Prefab

何时何地Instatiate您需要它

并使用GetComponent<>()方法可以获得附加组件

GameObject bullets = Instantiate(yourPrefab, yourtransform.position, Quaternion.identity) as GameObject;
bullets.GetComponent<Rigidbody>().AddForce(transform.forward * 100, ForceMode.Impulse);
于 2020-10-08T04:04:21.420 回答