您如何排除某些实体不受工作系统的影响? (点)

时间:2019-04-16 18:07:00

标签: c# unity3d

我对使用Unity中的ECSJob System还是陌生的,所以也许我误解了这里的核心概念。我尝试浏览文档,但找不到答案(也许是因为它仍在预览中)。无论如何,我希望能够将某些具有相同组件的实体排除在工作系统之外。

例如:

您有工作:

            // simplified
            Entities.ForEach((ref Acceleration acceleration, ref Velocity velocity, ref Translation translation) =>
            {
                var deltaTime = Time.deltaTime;
                acceleration.value = gravityMass * math.lengthsq(math.distance(translation.Value, float3.zero));
                velocity.value += acceleration.value * deltaTime;
                translation.Value += velocity.value * -math.normalize(translation.Value) * deltaTime;
            });`

您有两个实体,都包含AccelerationVelocityTranslation组件。您的一个实体是一块太空石,另一个是子弹。您如何使以上系统仅影响太空岩石?

我唯一想到的就是为相同类型的数据(即BulletVelocityRockVelocity)创建不同的命名组件,但这感觉不像是一种正确的处理方式

1 个答案:

答案 0 :(得分:0)

I decided to make two different components, one called Gravity and another called Acceleration.

Edit: In other cases it may be better to use tag components