FairyGUI.Transition.ShakeItem C# (CSharp) Method

ShakeItem() private method

private ShakeItem ( TransitionItem item ) : void
item TransitionItem
return void
        internal void ShakeItem(TransitionItem item)
        {
            float r = Mathf.Ceil(item.value.f1 * item.startValue.f3 / item.value.f2);
            Vector2 vr = UnityEngine.Random.insideUnitCircle * r;
            vr.x = vr.x > 0 ? Mathf.Ceil(vr.x) : Mathf.Floor(vr.x);
            vr.y = vr.y > 0 ? Mathf.Ceil(vr.y) : Mathf.Floor(vr.y);

            item.target._gearLocked = true;
            item.target.SetXY(item.target.x - item.startValue.f1 + vr.x, item.target.y - item.startValue.f2 + vr.y);
            item.target._gearLocked = false;

            item.startValue.f1 = vr.x;
            item.startValue.f2 = vr.y;
            item.startValue.f3 -= Time.deltaTime;
            if (item.startValue.f3 <= 0)
            {
                item.target._gearLocked = true;
                item.target.SetXY(item.target.x - item.startValue.f1, item.target.y - item.startValue.f2);
                item.target._gearLocked = false;

                item.completed = true;
                _totalTasks--;
                Timers.inst.Remove(item.__Shake);

                CheckAllComplete();
            }
        }

Usage Example

示例#1
0
        public TransitionItem(Transition owner, TransitionActionType type)
        {
            this.type  = type;
            easeType   = Ease.OutQuad;
            value      = new TransitionValue();
            startValue = new TransitionValue();
            endValue   = new TransitionValue();

            if (type == TransitionActionType.Shake)
            {
                onShake = (object param) => { owner.ShakeItem(this); }
            }
            ;
            else if (type == TransitionActionType.Transition)
            {
                onPlayComplete = () => { owner.PlayTransComplete(this); }
            }
            ;
        }