Внедрение единой системы заданий для простого движения - PullRequest
0 голосов
/ 04 октября 2019

Я немного растерялся, чтобы управлять движением. Обычно в MonoBehavior это было так просто, как transform.position+= transform.forward * Time.deltaTime * someMoveSpeed;

Как я теперь понимаю, мы используем библиотеку using Unity.Transforms;, которая поставляется с Translation. У меня проблемы с поиском какой-либо документации о том, как заставить моих людей двигаться вперед с этим. В общем, на самом деле я не уверен, правильно ли я выполнил задание. Когда я запускаю это, я получаю перечисленные скорости всплеска, показывая, что это «работает», но движение сущностей никогда не начинает двигаться. До этого у меня была обычная система, которая работала на всех моих подразделениях. Я просто пытаюсь извлечь из этого как можно большую производительность, чтобы понять, насколько далеко я могу ее продвинуть.

public class VillagerMoveJobSystem : JobComponentSystem
{

    [BurstCompile]
    [RequireComponentTag(typeof(VillagerData))]
    [ExcludeComponent(typeof(VillagerSpawner))]
    struct VillagerMoveJob : IJobForEach<Translation>
    {
        public float dt;
        // The [ReadOnly] attribute tells the job scheduler that this job will not write to rotSpeed
        public void Execute(ref Translation transform)
        {
            // Rotate something about its up vector at the speed given by RotationSpeed.  
            transform.Value = new float3(2 * Time.deltaTime, 0, 0);
            //transform.position+= transform.forward * Time.deltaTime * 2;
        }
    }
    protected override JobHandle OnUpdate(JobHandle inputDeps)
    {
        var job = new VillagerMoveJob
        {
            dt = Time.deltaTime
        };
        return job.Schedule(this, inputDeps);
    }
}
...