Beispiel #1
0
        protected void WalkTo(GridPosition nextTile)
        {
            TruePosition = Position.Clone();
            int lastDir = Faceddirection;

            Faceddirection = InputHandlerer.GetDirectionTo(Position, nextTile);

            SetAnimatorDirection(Faceddirection);
            if (lastDir != Faceddirection)
            {
                //   Debug.Log("Turn " + Faceddirection);
                anim.Play("Walk");
            }

            if (GameGrid.currentGrid.isInBounds(nextTile))
            {
                GridPosition     selectedTile;
                GameGrid.WalType canWalk = GameGrid.currentGrid.CanBeWalked(Position, nextTile, out selectedTile);
                if (canWalk == GameGrid.WalType.JumUp || Position.z != nextTile.z)
                {
                    int height = nextTile.z - Position.z;
                    if (height < 0)
                    {
                        height = 1;
                    }
                    Position = nextTile;

                    StartJump(GameGrid.currentGrid.GetWalkPoint(nextTile) + topOffset, height - 1);
                }
                else if (canWalk == GameGrid.WalType.CanWalk)
                {
                    Position = nextTile;
                    iTween.MoveTo(body.gameObject, iTween.Hash("position", GameGrid.currentGrid.GetTile(selectedTile).CenterPoint + topOffset, "time", Options._instance.CharacterMovementSpeed, "easetype", iTween.EaseType.linear));
                    body.StartCoroutine(MovementMidpoint(Options._instance.CharacterMovementSpeed / 2));
                    body.StartCoroutine(MoveEnabler(Options._instance.CharacterMovementSpeed));
                }
            }
        }
Beispiel #2
0
        public override void WalkingUpdate()
        {
            if (!isAlive)
            {
                return;
            }
            if (walkingPath)
            {
                return;
            }
            if (isMoving)
            {
                return;
            }

            int selecteddir = 0;

            if (Input.GetAxisRaw("Vertical") != 0 || Input.GetAxisRaw("Horizontal") != 0)
            {
                //  body.transform.position += GameGrid.BlockDirections.NE * (Input.GetAxis("Vertical") + 0.5f*Input.GetAxisRaw("Vertical") ) / 15;
                //  body.transform.position += GameGrid.BlockDirections.SE * (Input.GetAxis("Horizontal") + 0.5f * Input.GetAxisRaw("Horizontal")) / 15;

                Vector2 speed   = new Vector2(0, 0);
                int     lastDir = anim.GetInteger("dir");

                // Detect when control-keys are pressed or released and adjust the backside of character
                if (Input.GetAxisRaw("Horizontal") != 0)
                {
                    speed.x = Input.GetAxisRaw("Horizontal");
                }
                if (Input.GetAxisRaw("Vertical") != 0)
                {
                    speed.y = Input.GetAxisRaw("Vertical");
                }

                if (Mathf.Abs(speed.x) > Mathf.Abs(speed.y))
                {
                    selecteddir = speed.x > 0 ? 3 : 1;
                }
                else if (Mathf.Abs(speed.x) < Mathf.Abs(speed.y))
                {
                    selecteddir = speed.y > 0 ? 2 : 4;
                }

                if (selecteddir == 0)
                {
                    selecteddir = Faceddirection;
                }

                if (lastDir != selecteddir)
                {
                    Faceddirection = selecteddir;
                }

                GridPosition futurePosition = Position.Clone();

                anim.SetInteger("dir", (int)Faceddirection);

                if (selecteddir == 3)
                {
                    futurePosition.y++;
                }
                else if (selecteddir == 1)
                {
                    futurePosition.y--;
                }
                else if (selecteddir == 2)
                {
                    futurePosition.x++;
                }
                else if (selecteddir == 4)
                {
                    futurePosition.x--;
                }



                if (GameGrid.currentGrid.isInBounds(futurePosition))
                {
                    GridPosition     selectedTile;
                    GameGrid.WalType canWalk = GameGrid.currentGrid.CanBeWalked(Position, futurePosition, out selectedTile);
                    body.StartCoroutine(MoveTo(selectedTile));
                }
            }
            else
            {
                anim.SetBool("move", false);
            }
            inputeHandlerer.UpdateInput(selecteddir);


            if (Input.GetButtonDown("Skill"))
            {
                //    GameManager._intance.ActivateSkill(0, this);
            }
        }