public void OnSerializeNetworkView2D(BitStream stream, NetworkMessageInfo info, UnitActionCommand pUnitActionCommand, bool pIsAlive) { Transform lTransform = characterController.transform; Vector3 lData = Vector3.zero; //--------------------------------------------------- if (stream.isWriting) { lData = lTransform.position; lData.z = yVelocity; } //--------------------------------------------------- stream.Serialize(ref lData); //--------------------------------------------------- if (stream.isReading) { yVelocity = lData.z; lData.z = 0f; lTransform.position = lData; var lDeltaTime = (float)(Network.time - info.timestamp); if (lDeltaTime > 0.02f) update2D(pUnitActionCommand, UnitFace.getValue(pUnitActionCommand.face), pIsAlive, lDeltaTime * Time.timeScale); lastUpdateTime = Time.time; } }
public UnitActionCommand GetActionCommandFromInput() { UnitActionCommand lActionCommand = new UnitActionCommand(); //lActionCommand.MoveLeft=Input.GetButton ("left"); if (Input.GetButton("left")) { lActionCommand.FaceLeft = true; lActionCommand.GoForward = true; } //lActionCommand.MoveRight=Input.GetButton ("right"); if (Input.GetButton("right")) { lActionCommand.FaceRight = true; lActionCommand.GoForward = true; } lActionCommand.FaceDown = Input.GetButton("down"); lActionCommand.FaceUp = Input.GetButton("up"); lActionCommand.Fire = Input.GetButton("fire"); //lActionCommand.Jump=Input.GetButtonDown("jump"); lActionCommand.Jump = Input.GetButton("jump"); lActionCommand.Action1 = Input.GetButton("action1"); lActionCommand.Action2 = Input.GetButton("action2"); return lActionCommand; }
public void update2D(UnitActionCommand pUnitActionCommand, int pFaceValue, bool isAlive, float pDeltaTime) { if (!isAlive | !pUnitActionCommand.GoForward) pFaceValue = 0; var lLastYVelocity = yVelocity; if (isAlive && characterController.isGrounded) { if (!pUnitActionCommand.FaceDown) { if (pUnitActionCommand.Jump) yVelocity = jumpSpeed; else yVelocity = yNullVelocity; //以免飞起来 } } else yVelocity = Mathf.Max(yVelocity - gravity * pDeltaTime, minYVelocity); if (yVelocity > 0 && (characterController.collisionFlags & CollisionFlags.Above) > 0) yVelocity = 0; // Move the controller Vector3 lMove = new Vector3(pFaceValue * runSpeed * pDeltaTime, (yVelocity + lLastYVelocity) / 2f * pDeltaTime, 0); characterController.Move(lMove); }
void moveToAim(UnitActionCommand pCommand,Vector3 pAim) { var lPosition = transform.position; if (lPosition.x < pAim.x) { pCommand.FaceLeft = false; pCommand.FaceRight = true; } else { pCommand.FaceLeft = true; pCommand.FaceRight = false; } }
public UnitActionCommand GetActionCommandFromInput() { UnitActionCommand lActionCommand = new UnitActionCommand(); if (Input.GetKey(left)) { lActionCommand.FaceLeft = true; lActionCommand.GoForward = true; } if (Input.GetKey(right)) { lActionCommand.FaceRight = true; lActionCommand.GoForward = true; } lActionCommand.FaceDown = Input.GetKey(down); lActionCommand.FaceUp = Input.GetKey(up); lActionCommand.Fire = Input.GetKey(fire); lActionCommand.Jump = Input.GetKey(jump); lActionCommand.Action1 = Input.GetKey(action1); lActionCommand.Action2 = Input.GetKey(action2); return lActionCommand; }
public override void setCommand(UnitActionCommand pUnitActionCommand) { command = pUnitActionCommand; }
public override void processCommand(UnitActionCommand pUnitActionCommand) { //pUnitActionCommand.face = actionFace; pUnitActionCommand.GoForward = !characterController.isGrounded; if(actionJump) { pUnitActionCommand.Jump = actionJump; actionJump = false; } }
void OnCommand(UnitActionCommand pCommand) { if (character2D.characterController.isGrounded && pCommand.Jump && !pCommand.FaceDown && !_actionEnergyValue.tryUse(jumpCost)) { pCommand.Jump = false; } processAction(pCommand); }
public override void setCommand(UnitActionCommand pUnitActionCommand) { /* if(gameObject.name!="pismireHero1(Clone)") { print(gameObject.name); print("setCommand"); print(pUnitActionCommand); } */ commandChangedReceiver(pUnitActionCommand); pUnitActionCommand.calculateFace(unitActionCommand.face); unitActionCommand.command = pUnitActionCommand.command; }
public UnitActionCommand(UnitActionCommand pOther) { //FaceLeft = pOther.FaceLeft;//������ //FaceRight = pOther.FaceRight;//������ //FaceUp = pOther.FaceUp; //FaceDown = pOther.FaceDown; //GoForward = pOther.GoForward;//ǰ�� //Fire = pOther.Fire;//���� //Jump = pOther.Jump;//��Ծ command = pOther.command; }
public abstract void setCommand(UnitActionCommand pUnitActionCommand);
static void nullCommandChangedReciver(UnitActionCommand p) { }
//public int getFaceValue(UnitActionCommand pActionCommand) //{ // if (pActionCommand.FaceLeft) // { // return -1; // } // else if (pActionCommand.FaceRight) // { // return 1; // } // return 0; //} public void setFaceCommand(UnitActionCommand pActionCommand, int face) { if (face < 0) { pActionCommand.FaceLeft = true; } else if (face > 0) { pActionCommand.FaceRight = true; } }
/// <summary> /// /// </summary> /// <param name="pAimPos">路途点</param> /// <param name="pFinalPos">最终点</param> /// <returns></returns> public UnitActionCommand moveToAim(Vector3 pAimPos,Transform pFinalAim) { UnitActionCommand lActionCommand = new UnitActionCommand(); Vector3 lPosition = transform.position; int lFaceValue; bool lTooCloseToFinalPos = isOverGun(pFinalAim); //if (Mathf.Abs(lPosition.y - pFinalPos.y) < 0.5f // && Mathf.Abs(pFinalPos.x - lPosition.x) < tooCloseDistance) // lTooCloseToFinalPos = true; //else // lTooCloseToFinalPos = false; //离目标太近时,不改变方向 if (lTooCloseToFinalPos) lFaceValue = actionCommandControl.getFaceValue(); else//否则继续接近下一个目标(寻路)点 lFaceValue = Mathf.RoundToInt(pAimPos.x - lPosition.x); lActionCommand.GoForward = true; if (character.isGrounded) { //目标x值 在一定范围内时,可跳跃 if (Mathf.Abs(pAimPos.x - lPosition.x) < 1.0f) { if (pAimPos.y > lPosition.y + 0.8f) { lActionCommand.Jump = true; //Debug.Log("jump1"); } else if (pAimPos.y < lPosition.y - 0.5f) { lActionCommand.Jump = true; lActionCommand.FaceDown = true; } } } //目标x值 在一定范围内时,停止前进 if ( Mathf.Abs(pAimPos.x - lPosition.x) < 0.3f && !lTooCloseToFinalPos //不能离最终位置太近 ) lActionCommand.GoForward = false; else if ( character.isGrounded && !lActionCommand.Jump && ( haveBarrier//前方是否有障碍 || (//判断前进的方向上是否有可站立的地方,没有 就跳跃 pAimPos.y >= lPosition.y && forwardBoardDetector.detect(1, layers.standPlaceValue).Length == 0 ) ) ) { lActionCommand.Jump = true; //Debug.Log("jump2"); } setFaceCommand(lActionCommand, lFaceValue); return lActionCommand; }
void processAction(UnitActionCommand lActionCommand) { //if (nowAction && !nowAction.inActing) //{ // nowAction = null; //} //if (nowAction) //{ // nowAction.processCommand(lActionCommand); //} //else if (!nowAction) { if (lActionCommand.Fire && _actionEnergyValue.tryUse(fireCost)) { nowAction = fireAction; } else if (lActionCommand.Action1 && _actionEnergyValue.tryUse(action1Cost)) { nowAction = action1; } else if (lActionCommand.Action2 && _actionEnergyValue.tryUse(action2Cost)) { nowAction = action2; } } lActionCommand.Action1 = action1.inActing; lActionCommand.Action2 = action2.inActing; lActionCommand.Fire = fireAction.inActing; }
public void update2D(UnitActionCommand pUnitActionCommand, int pFaceValue, bool isAlive) { update2D(pUnitActionCommand, pFaceValue, isAlive, Time.time - lastUpdateTime); lastUpdateTime = Time.time; }
///// <summary> ///// ///// </summary> ///// <returns>是否成功开启动作</returns> //public virtual bool beginAction() //{ // _inActing = true; // return true; //} public virtual void processCommand( UnitActionCommand pUnitActionCommand) { }
void OnCommand(UnitActionCommand pCommand) { //pCommand.Fire = fireAction.inActing; if (nowAction) { //若在无 if (nowAction)下执行,会关闭动作命令 pCommand.Action1 = action1.inActing; pCommand.Action2 = action2.inActing; pCommand.Fire = fireAction.inActing; //print(!nowAction.canMove); if (!nowAction.canChangeFace) pCommand.command &= UnitActionCommand.negFaceCommand; if (!nowAction.canMove) pCommand.command &= UnitActionCommand.negGoForwardCommand; } //else if (pCommand.Action1 && pCommand.Action2) // pCommand.Action2 = false; }