Example #1
0
 void SetNextActionMode(MoveMentMode mode)
 {
     //Debug.Log("--------" + mode);
     if (NextActionAddIndex == 0)
     {
         ResetBufferIndex();
     }
     MovementBuffer[NextActionAddIndex++] = new MovementQueueEntry(mode);
 }
Example #2
0
    public void NextAction()
    {
        if (MovementBuffer [nextActionIndex] == null)
        {
            if (_isTail && !addBodyToEnd)
            {
                NextActionAddIndex = 0;
            }
        }
        else
        {
            MovementQueueEntry entry = MovementBuffer [nextActionIndex];
            var     next             = entry.Mode;
            Vector3?transPosition    = entry.Position;
            Vector3 thisPosition     = this.transform.position;

            if (transPosition == null)
            {
                transPosition  = thisPosition;
                entry.Position = thisPosition;
            }

            if (thisPosition == transPosition.Value)
            {
                this.transform.position = transPosition.Value;
                nextActionIndex++;

                switch (next)
                {
                case MoveMentMode.Right:
                {
                    this._rigidbody.velocity = new Vector2(1f * SpeedMutiplier, 0.0f);
                    LastMode = next;
                    break;
                }

                case MoveMentMode.Left:
                {
                    this._rigidbody.velocity = new Vector2(-1f * SpeedMutiplier, 0.0f);
                    LastMode = next;
                    break;
                }

                case MoveMentMode.Up:
                {
                    this._rigidbody.velocity = new Vector2(0.0f, 1f * SpeedMutiplier);
                    LastMode = next;
                    break;
                }

                case MoveMentMode.Down:
                {
                    this._rigidbody.velocity = new Vector2(0.0f, -1f * SpeedMutiplier);
                    LastMode = next;
                    break;
                }


                case MoveMentMode.RightBorder:
                {
                    this.transform.position = new Vector3(MainCam.ViewportToWorldPoint(new Vector3(1f, 0f, 0f)).x, thisPosition.y, 0.0f);
                    break;
                }

                case MoveMentMode.LeftBorder:
                {
                    this.transform.position = new Vector3(MainCam.ViewportToWorldPoint(new Vector3(0f, 0f, 0f)).x, thisPosition.y, 0.0f);
                    break;
                }

                case MoveMentMode.UpBorder:
                {
                    this.transform.position = new Vector3(thisPosition.x, (MainCam.ViewportToWorldPoint(new Vector3(0f, 1f, 0f)).y));
                    break;
                }

                case MoveMentMode.DownBorder:
                {
                    this.transform.position = new Vector3(thisPosition.x, (MainCam.ViewportToWorldPoint(new Vector3(0f, 0f, 0f)).y));
                    break;
                }
                }
            }
            else if (_isTail)
            {
                //Debug.Log (MovementBuffer [nextActionIndex].Position + "" + thisPosition + this.gameObject.ToString ());
            }
        }

        if (addBodyToEnd)
        {
            lock (MovementBuffer) {
                //safety measure
                Time.timeScale = 0f;
                AddBodyProcess();
                addBodyToEnd   = false;
                Time.timeScale = 1f;
            }
        }
    }