Exemple #1
0
 public void StopWaggle()
 {
     if (waggleState != WaggleState.stopped)
     {
         waggleState = WaggleState.stopping;
     }
 }
Exemple #2
0
 public void StartWaggle()
 {
     if (!isWaggling)
     {
         timeWaggleAnchor = Time.time;
         waggleState      = WaggleState.waggling;
     }
 }
Exemple #3
0
 // Use this for initialization
 void Awake()
 {
     waggleState = WaggleState.stopped;
 }
Exemple #4
0
    // Update is called once per frame
    void Update()
    {
        if (flipState != FlipState.none)
        {
            float timeElapsed = Time.time - timeFlipStart;
            if (timeElapsed < flipDuration)
            {
                float radians   = Mathf.PI * timeElapsed / flipDuration;
                float scaleFlip = Mathf.Cos(radians);
                if (scaleFlip <= 0)
                {
                    scaleFlip = -scaleFlip;
                    if (flipState != FlipState.toFlat)
                    {
                        flipState = FlipState.toFlat;
                        Sprite spriteOld = spriteRendererCard.sprite;
                        spriteRendererCard.sprite  = (bShowFront) ? spriteFront : spriteBack;
                        spriteRendererFace.enabled = spriteRendererFaceFrame.enabled = bShowFront;
                    }
                }
                transform.localScale = new Vector3(scaleFlip, 1, 1);
            }
            else
            {
                flipState            = FlipState.none;
                transform.localScale = new Vector3(1, 1, 1);
            }
        }
        if (isMoving)
        {
            float timeElapsed = Time.time - timeMoveStart;
            if (timeElapsed < moveDuration)
            {
                float radians = Mathf.PI * 0.5f * timeElapsed / moveDuration;
                float sinLerp = Mathf.Sin(radians);
                SetPos(posMoveStart + (posMoveEnd - posMoveStart) * sinLerp);
                dimCard = dimMoveStart + (dimMoveEnd - dimMoveStart) * sinLerp;
                UpdateSpritesScales();
            }
            else
            {
                isMoving = false;
                SetPos(posMoveEnd);
                UpdateSpritesScales();
            }
        }
        if (waggleState != WaggleState.stopped)
        {
            float   timeDelta = Time.time - timeWaggleAnchor;
            float   radians   = timeDelta * (2f * Mathf.PI * 1.5f); // 1.75f);
            float   sinWaggle = Mathf.Sin(radians);
            float   tiltDegs  = sinWaggle * 30f;                    // 45f;
            Vector3 eulers    = transform.localRotation.eulerAngles;
            transform.localRotation = Quaternion.Euler(eulers.x, eulers.y, tiltDegs);

            if (waggleState == WaggleState.stopping)
            {
                if (Mathf.Sign(sinWaggle) != Mathf.Sign(sinWagglePrev))
                {
                    transform.localRotation = Quaternion.Euler(eulers.x, eulers.y, 0);
                    waggleState             = WaggleState.stopped;
                }
            }
            sinWagglePrev = sinWaggle;
        }
    }