繁体   English   中英

如何使用 C# unity 将碰撞器添加到预制件

[英]How to add collider to prefab with C# unity

我下载了 Unity MegaCity,我想把它做成一个游戏。 但我需要给汽车添加一个碰撞器。 我向预制件本身添加了一个,但它在游戏中不起作用,所以我需要使用代码来添加一个。 我怎么做? 代码在这里:

using UnityEngine;
using Unity.Entities;
using System.Collections.Generic;
using Unity.Collections;

namespace Traffic.Simulation
{
public class TrafficSettings : MonoBehaviour, IConvertGameObjectToEntity, IDeclareReferencedPrefabs
{
public float pathSegments=100;
public float globalSpeedFactor = 1.0f;
public int maxCars = 2000;
public Collider PrefabCollider;

public float[] speedMultipliers;

public List<GameObject> vehiclePrefabs;



public void DeclareReferencedPrefabs(List<GameObject> gameObjects)
{
for (int i = 0; i < vehiclePrefabs.Count; i++)
{
gameObjects.Add(vehiclePrefabs[i]);
}
}

public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
{
for (int j = 0; j < vehiclePrefabs.Count; j++)
{
// A primary entity needs to be called before additional entities can be used
Entity vehiclePrefab = conversionSystem.CreateAdditionalEntity(this);
var prefabData = new VehiclePrefabData
{
VehiclePrefab = conversionSystem.GetPrimaryEntity(vehiclePrefabs[j]),
VehicleSpeed = j < speedMultipliers.Length ? speedMultipliers[j] : 3.0f
};
dstManager.AddComponentData(vehiclePrefab, prefabData);
}
var trafficSettings = new TrafficSettingsData
{
GlobalSpeedFactor = globalSpeedFactor,
PathSegments = pathSegments,
MaxCars = maxCars
};

dstManager.AddComponentData(entity, trafficSettings);
}
}
}

有没有像 gameobjects.SetCollider 之类的函数?

您可以使用AddComponent添加一个组件(在本例中为碰撞器)。

这行代码将添加一个组件(在我的例子中是一个球体碰撞器)。 这可用于任何类型的组件。

SphereCollider collider = gameObject.AddComponent(typeof(SphereCollider)) as SphereCollider;

Sphere Collider 的名称是之前指定的collider

gameObject.AddComponent(typeof(SphereCollider)) as SphereCollider;

文档: https : //docs.unity3d.com/ScriptReference/GameObject.AddComponent.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM