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)); } }
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)); } }