/// <summary> /// 构造函数 /// </summary> /// <param name="time">时间</param> /// <param name="type">指令类型 旋转 移动</param> /// <param name="value">指令对应值</param> public RecordTransform(float time, RecordCommond_Type type, Vector3 value) { this.time = time; this.type = (short)type; this.x = value.x; this.y = value.y; this.z = value.z; }
IEnumerator PlayNow() { while (true) { if (record.Count == 0) { break; } //while循环 用户同一时间输入移动和旋转 while (Mathf.Abs(Time.time - record.Peek().time) < offSet) { RecordTransform rt = record.Dequeue(); RecordCommond_Type r = rt.GetRecordCommondType(); switch (r) { case RecordCommond_Type.Position: this.transform.position = rt.GetValue(); break; case RecordCommond_Type.Rotation: this.transform.eulerAngles = rt.GetValue(); break; default: break; } if (record.Count == 0) { break; } } yield return(0); } }
/// <summary> /// 记录当前帧 /// </summary> /// <param name="type">指令类型</param> /// <param name="value">值</param> public void RecordCurrentFrame(RecordCommond_Type type, Vector3 value) { record.Enqueue(new RecordTransform(Time.time, type, value)); }