Beispiel #1
0
        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);
        }
Beispiel #2
0
    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
        };
    }