Пример #1
0
    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());
    }
Пример #2
0
    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;
    }