public void MoveCard(Vector3 newPosition, bool isEndFlipped, float playTime, bool isSloppy) { float _zRotEndValue = 0; if (isSloppy) { RandomTransform _addSlop = GetRandomTransform(40.0f, 0.4f); newPosition = newPosition + _addSlop.position; _zRotEndValue = _addSlop.rotation.z; } Animation _anim = GetComponent <Animation>(); AnimationCurve _xCurve = AnimationCurve.Linear(0, transform.localPosition.x, //start time, startValue, playTime, newPosition.x); //endTime, endValue AnimationCurve _yCurve = AnimationCurve.Linear(0, transform.localPosition.y, playTime, newPosition.y); AnimationCurve _zCurve = AnimationCurve.Linear(0, newPosition.z, playTime, newPosition.z); AnimationCurve _xRot = AnimationCurve.Linear(0, transform.localRotation.x, playTime, 0); AnimationCurve _yRot; if (IsFlipped == isEndFlipped) { _yRot = AnimationCurve.Linear(0, transform.localRotation.y, playTime, 0); } else { _yRot = AnimationCurve.Linear(0, 3.14f, playTime, 0.0f); Invoke("Flip", playTime / 2); } AnimationCurve _zRot = AnimationCurve.Linear(0, transform.localRotation.z, playTime, _zRotEndValue); AnimationCurve _wRot = AnimationCurve.Linear(0, transform.localRotation.w, playTime, transform.localRotation.w); AnimationClip _clip = new AnimationClip(); _clip.SetCurve("", typeof(Transform), "localPosition.x", _xCurve); _clip.SetCurve("", typeof(Transform), "localPosition.y", _yCurve); _clip.SetCurve("", typeof(Transform), "localPosition.z", _zCurve); _clip.SetCurve("", typeof(Transform), "localRotation.x", _xRot); _clip.SetCurve("", typeof(Transform), "localRotation.y", _yRot); _clip.SetCurve("", typeof(Transform), "localRotation.z", _zRot); _clip.SetCurve("", typeof(Transform), "localRotation.w", _wRot); _anim.AddClip(_clip, "moveCard" + Name.ToString()); _anim.Play("moveCard" + Name.ToString()); }
public void SetRandomTransform(float range, float rotationRange) { RandomTransform _newTransform = GetRandomTransform(range, rotationRange); Quaternion _currentRotation = transform.rotation; Vector3 _currentPosition = transform.position; transform.rotation = _newTransform.rotation; transform.position = _currentPosition + _newTransform.position; }