Я немного растерялся, чтобы управлять движением. Обычно в 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);
}
}