public void Execute(int p_index, TransformAccess p_transform) { if (DataArray.Length <= p_index) { return; } WavyBehaviourData data = DataArray[p_index]; float3 originalPos = p_transform.position; float3 pos = originalPos + data.Direction * data.Speed * DeltaTime; float angle = Mathf.Sin((Time - data.StartTime) * data.Frequency + Mathf.PI / 2f); p_transform.position = pos + (float3)data.Axis * angle * data.Magnitude * DeltaTime; p_transform.rotation = Quaternion.AngleAxis(Mathf.Atan2(data.Direction.y, data.Direction.x) * Mathf.Rad2Deg - angle * Mathf.Rad2Deg + data.SpriteRotation, Vector3.forward); }
protected override void CreateJob(List <IProjData> p_dataList) { WavyBehaviourData[] dataArray = new WavyBehaviourData[p_dataList.Count]; for (int i = 0; i < p_dataList.Count; i++) { dataArray[i] = (WavyBehaviourData)p_dataList[i]; } m_dataArray = new NativeArray <WavyBehaviourData>(dataArray, Allocator.Temp); m_job = new WavyBehaviourMoveJob { DeltaTime = Time.deltaTime, Time = Time.time, DataArray = m_dataArray }; }