Exemplo n.º 1
0
    private void Move(KeyBoardMoveDescriptor keyBoardMoveDescriptor)
    {
        if (keyBoardMoveDescriptor == KeyBoardMoveDescriptor.None)
        {
            m_animator.SetInteger("ForwardOrBack", 0);
            return;
        }

        m_animator.SetInteger("ForwardOrBack", 1);

        if ((keyBoardMoveDescriptor & KeyBoardMoveDescriptor.Up) != 0)
        {
            m_animator.SetFloat("Direction", 1.0f, 0.0f, Time.deltaTime);
        }
        else if ((keyBoardMoveDescriptor & KeyBoardMoveDescriptor.Down) != 0)
        {
            m_animator.SetFloat("Direction", -1.0f, 0.0f, Time.deltaTime);
        }
        else
        {
            m_animator.SetFloat("Direction", 0.0f);
        }

        if ((keyBoardMoveDescriptor & KeyBoardMoveDescriptor.Left) != 0)
        {
            m_animator.SetFloat("LeftOrRight", -1.0f, 0.2f, Time.deltaTime);
        }
        else if ((keyBoardMoveDescriptor & KeyBoardMoveDescriptor.Right) != 0)
        {
            m_animator.SetFloat("LeftOrRight", 1.0f, 0.2f, Time.deltaTime);
        }
        else
        {
            m_animator.SetFloat("LeftOrRight", 0.0f, 0.2f, Time.deltaTime);
        }
    }
Exemplo n.º 2
0
    // Update is called once per frame
    void Update()
    {
        // player dying
        if (m_animator.GetBool("Death"))
        {
            // if (m_deathCount > 0)
            // {
            //     m_deathCount -= Time.deltaTime;
            //     MessageDispacher.Instance.Send(
            //         UIMessage.UpdateRebornProgress, 1.0f - m_deathCount / PlayerConfigure.RebornWaitingTime);
            //     if (m_deathCount <= 0)
            //     {
            //         m_deathCount = 0;
            //         m_networkService.Send(new PlayerRebornCommand(PlayerInfo.LocalPlayer.UserID));
            //     }
            // }
            return;
        }

        if (Cursor.lockState != CursorLockMode.Locked)
        {
            return;
        }

        // move
        m_keyBoardDirection = KeyBoardMoveDescriptor.None;

        float dx   = Input.GetAxis("Mouse X");
        var   rate = PlayerConfigure.CameraMouseMoveRateX;

        m_phi += dx * rate;

        if (Mathf.Abs(dx) > 1e-5f)
        {
            m_isRotate = true;
        }

        var rotate = Quaternion.AngleAxis(360.0f * m_phi, Vector3.up);

        this.transform.rotation = rotate;

        if (Input.GetKey(KeyCode.W))
        {
            m_keyBoardDirection |= KeyBoardMoveDescriptor.Up;
            m_animator.SetFloat("Direction", 1.0f, 0.0f, Time.deltaTime);
        }
        else if (Input.GetKey(KeyCode.S))
        {
            m_keyBoardDirection |= KeyBoardMoveDescriptor.Down;
            m_animator.SetFloat("Direction", -1.0f, 0.0f, Time.deltaTime);
        }
        else
        {
            m_animator.SetFloat("Direction", 0.0f);
        }

        if (Input.GetKey(KeyCode.A))
        {
            m_keyBoardDirection |= KeyBoardMoveDescriptor.Left;
            m_animator.SetFloat("LeftOrRight", -1.0f, 0.2f, Time.deltaTime);
        }
        else if (Input.GetKey(KeyCode.D))
        {
            m_keyBoardDirection |= KeyBoardMoveDescriptor.Right;
            m_animator.SetFloat("LeftOrRight", 1.0f, 0.2f, Time.deltaTime);
        }
        else
        {
            m_animator.SetFloat("LeftOrRight", 0.0f, 0.2f, Time.deltaTime);
        }

        Move();

        if (m_keyBoardDirection != KeyBoardMoveDescriptor.None || Input.GetKey(KeyCode.Space))
        {
            m_networkService.Send(
                new MoveCommand(
                    PlayerInfo.LocalPlayer.UserID,
                    transform.position,
                    m_phi,
                    (byte)m_keyBoardDirection,
                    Input.GetKey(KeyCode.Space)
                    )
                );
        }
        else
        {
            if (m_isRotate)
            {
                m_networkService.Send(new PlayerRotateCommand(PlayerInfo.LocalPlayer.UserID, m_phi));
            }
        }

        if (Input.GetKeyDown(KeyCode.Alpha1))
        {
            m_currentPlayerMode = PlayerMode.Normal;
            m_handTrap.SetActive(false);
        }
        else if (Input.GetKeyDown(KeyCode.Alpha2))
        {
            m_currentPlayerMode = PlayerMode.SetTrap;
            m_handTrap.SetActive(true);
            m_handTrap.GetComponent <TrapController>().Reset();
        }

        if (m_currentPlayerMode == PlayerMode.Normal)
        {
            // switch shooting mode
            if (Input.GetKeyDown(KeyCode.T))
            {
                if (m_shootingMode == ShootingMode.Fixed)
                {
                    m_shootingMode = ShootingMode.Running;
                }
                else if (m_shootingMode == ShootingMode.Running)
                {
                    m_shootingMode = ShootingMode.Fixed;
                }
            }

            // recharge
            if (Input.GetKeyDown(KeyCode.R))
            {
                Recharge();
            }

            // shoot
            Shoot();
        }
        // set trap
        else
        {
            SetTrap();
        }

        BuyThings();
        DriveTank();

        m_isRotate = false;
    }