void Update()
 {
     KeyMove.MoveSixDirection(speed, transform);
     Rot(30.0f);
     FleeMove();
 }
Example #2
0
        public void CharacterUpdate()
        {
            CountDown.DecreaseTime(changeCharacterCountDown);
            CountDown.DecreaseTime(playerController.followEnemy);

            var tempIsControllable = playerController.GetIsControllable();

            if (isPlayable != tempIsControllable)
            {
                changeCharacterCountDown.StartToCount();
            }

            if (isPlayable != tempIsControllable)
            {
                SetSlideSizes();
            }

            isPlayable = tempIsControllable;

            if (isPlayable)
            {
                if (playerController.target != oldTarget)
                {
                    oldTarget = playerController.target;
                    if (playerController.target != null)
                    {
                        PlayerController.GetSliderEnemy(playerController.target);
                    }
                }

                #region Mover

                if (!model.ForceToStop)
                {
                    input.Vector2 = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));

                    foreach (var keyMove in utils.moveKeyCode)
                    {
                        if (Input.GetKey(keyMove.KeyCode.Value))
                        {
                            if (Input.GetKey(KeyCode.LeftShift) && !model.ForceToWalk)
                            {
                                PlayerAnimator.SetBool("isRunning", true);
                                PlayerAnimator.SetBool("isWalking", false);
                                playerController.Walk(keyMove.Vector2, (float)model.SpeedRun);
                            }
                            else
                            {
                                PlayerAnimator.SetBool("isWalking", true);
                                PlayerAnimator.SetBool("isRunning", false);
                                playerController.Walk(keyMove.Vector2, (float)model.SpeedWalk);
                            }

                            playerController.SetLastMoviment(input.Vector2.x, input.Vector2.y);
                            PlayerAnimator.SetFloat("speedX", input.Vector2.x);
                            PlayerAnimator.SetFloat("speedY", input.Vector2.y);

                            if (!keyMove.Flip.HasValue)
                            {
                                continue;
                            }
                            PlayerSpriteRenderer.flipX = keyMove.Flip.Value;
                        }
                        if (Input.GetKeyUp(keyMove.KeyCode.Value))
                        {
                            PlayerAnimator.SetBool("isWalking", false);
                            PlayerAnimator.SetBool("isRunning", false);
                        }
                    }
                }
                if (model.ForceToStop)
                {
                    PlayerAnimator.SetBool("isWalking", false);
                    PlayerAnimator.SetBool("isRunning", false);
                }
                #endregion

                #region Change Character

                if (changeCharacterCountDown.CoolDown <= 0 && Input.GetKeyDown(KeyCode.K) && !model.ForceToStop)
                {
                    playerController.ChangeControllableCharacter();
                    camera.SendMessage("UpdatePlayerTranform");
                    SetSlideSizes();
                }

                #endregion

                #region Interact

                if (Input.GetKey(KeyCode.J))
                {
                    playerController.Interact(transform, PlayerCollider2D.size);
                }
                #endregion
            }

            else
            {
                #region Follow

                if (model.PlayerMode == PlayerModes.Follow)
                {
                    if (Mathf.Abs(Vector3.Distance(transform.position, cv.playerGameObj.transform.position)) > DistanceOfPlayer)
                    {
                        //playerController.WalkToPlayer(transform, cv.playerGameObj.transform, ref model);
                        playerController.target = cv.playerGameObj.transform;
                        Move();
                        PlayerAnimator.SetBool("isWalking", true);
                    }
                    else
                    {
                        PlayerAnimator.SetBool("isWalking", false);
                        PlayerAnimator.SetBool("isRunning", false);
                    }
                }

                #endregion

                #region Walk Input

                input = playerController.GetInput(model.LastMoviment.Value);
                PlayerSpriteRenderer.flipX = input.Flip.Value;
                PlayerAnimator.SetFloat("speedX", input.Vector2.x);
                PlayerAnimator.SetFloat("speedY", input.Vector2.y);

                #endregion

                if (Vector3.Distance(transform.position, cv.playerGameObj.transform.position) > 15)
                {
                    model.PlayerMode = PlayerModes.Follow;
                }
            }

            transform.position = Utils.SetPositionZ(transform, colliderTransform.bounds.min.y);

            #region Change PlayerMode

            foreach (var playerMode in utils.playerModes)
            {
                if (Input.GetKey(playerMode.KeyButton[0]) && Input.GetKey(playerMode.KeyButton[1]))
                {
                    model.PlayerMode = playerMode.Value;
                    if (playerMode.Value == PlayerModes.Wait)
                    {
                        PlayerAnimator.SetBool("isWalking", false);
                        PlayerAnimator.SetBool("isRunning", false);
                    }
                }
            }

            #endregion
        }