Example #1
0
    public override void StateUpdate()
    {
        //接收按钮信号,true or false
        #region buttonX.GetSignal()

        buttonA.GetSignal(Input.GetButton(btn0));
        buttonB.GetSignal(Input.GetButton(btn1));

        buttonL3.GetSignal(Input.GetButton(btn8));
        buttonR3.GetSignal(Input.GetButton(btn9));

        buttonLB.GetSignal(Input.GetButton(btn4));
        buttonRB.GetSignal(Input.GetButton(btn5));

        buttonRT.GetSignal(true, Input.GetAxis(RT));
        buttonLT.GetSignal(true, Input.GetAxis(LT));

        buttonSelect.GetSignal(Input.GetButton(Btn_Select));
        buttonStart.GetSignal(Input.GetButton(Btn_Start));

        #endregion

        //---------------------------------------------------

        //左摇杆Y轴分量
        Target_Vertical = Input.GetAxis(AxisY);
        //左摇杆X轴分量
        Target_Horizontal = Input.GetAxis(AxisX);
        //右摇杆Y轴分量
        Jup = Input.GetAxis(Axis5);
        //右摇杆X轴分量
        Jright = -Input.GetAxis(Axis4);

        //是否禁用移动功能,移动分量归0
        if (!IsInputEnable)
        {
            Target_Horizontal = 0;
            Target_Vertical   = 0;
        }

        /* 以下注释的为原来的代码。手柄模式下无需进行斜边值的映射,代码修改。
         * Vector2 tempDAxis = SquareToCircle(new Vector2(Target_Horizontal, Target_Vertical));
         * 将平移值开方简化程序
         * DMag = Mathf.Sqrt((tempDAxis.x * tempDAxis.x) + (tempDAxis.y * tempDAxis.y));
         */

        //将控制移动的分量X,Y开方得到DMag
        DMag = Mathf.Sqrt((Target_Horizontal * Target_Horizontal) + (Target_Vertical * Target_Vertical));

        //计算转向,注意该脚本是挂载在角色控制柄上而非角色模型本身,旋转的是角色控制柄(角色模型是控制柄的子对象)
        Dvec = (Target_Horizontal * m_transform.right) + (Target_Vertical * m_transform.forward);

        //---------------------------------------------------

        //按钮信号的进一步判断,比如是按下,还是按住。
        #region
        isrun      = (buttonL3.isPressing);
        islock     = buttonR3.OnPressed;
        isdefense  = buttonLB.isPressing;
        isjump     = buttonA.OnPressed;
        isFontStab = buttonB.OnPressed;
        isStart    = buttonStart.OnPressed;

        rb = buttonRB.OnPressed;
        lb = buttonLB.OnPressed;
        rt = buttonRT.OnPressed;
        lt = buttonLT.OnPressed;
        #endregion

        value = CheckController.GetCurController();
        if (value == 1)
        {
            m_Controller.SetState(new KeyBoardState(m_Controller, m_transform));
        }
    }
Example #2
0
    public override void StateUpdate()
    {
        Target_Vertical   = (Input.GetKey(KeyUp) ? 1.0f : 0.0f) - (Input.GetKey(KeyDown) ? 1.0f : 0.0f);
        Target_Horizontal = (Input.GetKey(KeyRight) ? 1.0f : 0.0f) - (Input.GetKey(KeyLeft) ? 1.0f : 0.0f);
        if (!isOpenMouse)
        {
            Jup    = (Input.GetKey(KeyUpArrow) ? 1.0f : 0.0f) - (Input.GetKey(KeyDownArrow) ? 1.0f : 0.0f);
            Jright = (Input.GetKey(KeyRightArrow) ? 1.0f : 0.0f) - (Input.GetKey(KeyLeftArrow) ? 1.0f : 0.0f);
        }
        else
        {
            Jup    = Input.GetAxis("Mouse Y") * mouseSpeedX;
            Jright = Input.GetAxis("Mouse X") * mouseSpeedY;
        }

        if (!IsInputEnable)
        {
            Target_Horizontal = 0;
            Target_Vertical   = 0;
        }

        //对键值的增长进行平滑化处理
        Current_Vertical   = Mathf.SmoothDamp(Current_Vertical, Target_Vertical, ref Velocity_Vertical, 0.1f);
        Current_Horizontal = Mathf.SmoothDamp(Current_Horizontal, Target_Horizontal, ref Velocity_Horizontal, 0.1f);

        Vector2 tempDAxis = SquareToCircle(new Vector2(Current_Horizontal, Current_Vertical));

        //将平移值开方简化程序
        DMag = Mathf.Sqrt((tempDAxis.x * tempDAxis.x) + (tempDAxis.y * tempDAxis.y));

        //计算转向
        Dvec = (tempDAxis.x * m_transform.right) + (tempDAxis.y * m_transform.forward);


        isrun = Input.GetKey(KeyA);
        //isdefense = Input.GetKey(KeyD);

        //是否按下跳跃键
        bool newjump = Input.GetKey(KeyB);

        if (newjump != isjumplast && newjump == true)
        {
            isjump = true;
        }
        else
        {
            isjump = false;
        }
        isjumplast = newjump;


//		bool newattack = Input.GetKey(KeyC);
//		if (newattack != isattacklast && newattack == true)
//		{
//			rb = true;
//		}
//		else
//		{
//			rb = false;
//		}
//		isattacklast = newattack;

        value = CheckController.GetCurController();
        if (value == -1)
        {
            m_Controller.SetState(new JoyStrickState(m_Controller, m_transform));
        }
    }